본문 바로가기
C++ 200제/코딩 IT 정보

MFC 스크롤바 Scrollbar 다이얼로그에 만들기 예제 (동적 생성)

by vicddory 2017. 2. 3.

MFC 스크롤바, 다이얼로그 예제 (동적 Scroll Bar)


오른쪽, 아래쪽의 스크롤바 scrollbar를 이용해 GDI로 구현된 도형을 움직이는 프로그램인데 버그가 많군요. 회사 소스를 그대로 올릴 순 없으니 『버그는 스크롤바 참조할 분』들이 알아서 고치면 될 듯. 


동적으로 생성하는 막대기 만들기 소스입니다.


MFC로 만들기 방법은 아래 참조 사이트들을 자세히 살펴보세요.


MFC 다이얼로그 스크롤 예제동적 생성 만들기 방법 예제


Test_GDI_SCROLL




MFC 스크롤바 만들기 핵심 코드는 아래에 있습니다. 창의 크기가 변할 때마다 스크롤 바의 정보를 계속 갱신해주는 것이죠.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void CTest_GDI_SCROLLDlg::OnSize(UINT nType, int cx, int cy)
{
    // call base class OnSize
    CDialog::OnSize(nType,cx,cy);
 
    // update horizontal scroll bar info
    int HScrollMax = 0;
    HPageSize_ = 0;
 
    if ( cx < ViewWidth_)
    {
        HScrollMax = ViewWidth_ - 1;
        HPageSize_ = cx;
        HScrollPos_ = min(HScrollPos_,ViewWidth_ - HPageSize_ - 1);
    }
 
    SCROLLINFO si;
    si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS;
    si.nMin = 0;
    si.nMax = HScrollMax;
    si.nPos = HScrollPos_;
    si.nPage = HPageSize_;
    SetScrollInfo(SB_HORZ,&si,TRUE);
 
    // update vertical scrollbar info
    int VScrollMax = 0;
 
    VPageSize_ = 0;
 
    if( cy < ViewHeight_)
    {
        VScrollMax = ViewHeight_ - 1;
        VPageSize_ = cy;
        VScrollPos_ = min(VScrollPos_,ViewHeight_ - VPageSize_ - 1);
    }
 
    si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
    si.nMin = 0;
    si.nMax = VScrollMax;
    si.nPos = HScrollPos_;
    si.nPage = VPageSize_;
 
    SetScrollInfo(SB_VERT,&si,TRUE);
}
 
cs


아래는 제가 참조했던 사이트와 프로그램입니다.





스크롤바 참조 프로그램 - 1



MFC 스크롤바 예제동적 생성 만들기 방법 예제




스크롤바 참조 프로그램 - 2



MFC 스크롤 레벨 에디터동적 생성 만들기 방법 예제


MFC 스크롤바, 다이얼로그 예제 (동적 Scroll Bar)

댓글