CView에서 CScrollView로 변경하기

MFC 2019. 3. 17. 19:24 Posted by 쫀다



MFC에서 기본적으로 CView 라는 녀석을 상속 받는 뷰 클래스를 생성할 수 있는데, 이녀석은 스크롤바가 달려있지 않다.

물론 스타일을 수정하여 스크롤바를 달 수도 있지만 MFC에서 제공해주는 CScrollView를 통해서 간단하게 해결할 수가 있다.

아래는 CView 를 상속 받는 AView 를 스크롤뷰로 변경하는 예제다.

***변 경 방 법***

[Step 1]
class AView : public CView 를
class AView : public CScrollView 로 변경

[Step 2]
IMPLEMENT_DYNCREATE(AView, CView)
BEGIN_MESSAGE_MAP(AView, CView) 를

IMPLEMENT_DYNCREATE(AView, CScrollView)
BEGIN_MESSAGE_MAP(AView, CScrollView) 로 변경

[Step 3]
OnInitialUpdate() 함수를 오버라이딩해서 SetScrollSizes() 함수를 호출함. SetScrollSizes() 함수를 호출하여 초기화 하지 않을 경우 오류를 발생시킴.
void AView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CRect rc;
GetClientRect(&rc);
CSize sizeViewPage;
sizeViewPage.cx = rc.right-rc.left;
sizeViewPage.cy = rc.bottom-rc.top;

CSize sizeViewPageTotal;
sizeViewPageTotal.cx = sizeViewPage.cx;
sizeViewPageTotal.cy = sizeViewPage.cy; // 3페이지를 설정하고 싶으면 * 3을 하면 되긋지

SetScrollSizes(MM_TEXT, sizeViewPageTotal);

}

[Step 4] - 이것은 필수가 아니다.
OnVScroll() , OnHScroll() 메시지 함수를 구현함. 구현하지 않아도 기본적으로 SetScrollSizes()함수에서 지정한 공간만큼의 동작을 행한다. 특별하게 다른 처리를 하고 싶다면 재지정한다.
void AView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch(nSBCode)
{
case SB_LINEUP:
case SB_LINEDOWN:
case SB_PAGEUP:
case SB_PAGEDOWN:
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
break;
}

CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
void AView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch(nSBCode)
{
case SB_LINEUP:
case SB_LINEDOWN:
case SB_PAGEUP:
case SB_PAGEDOWN:
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
break;
}


CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}


<출처> https://njuhb.blog.me/140147043128

'MFC' 카테고리의 다른 글

SDI 에서 타이틀에 표시되는 문자열 수정하기  (0) 2019.03.17
Enumerating the Installed Fonts  (0) 2019.03.17
DC 텍스트 출력 폰트 FONT  (0) 2019.03.17
CPen CBrush  (0) 2019.03.17
보안이 강화된 적용된 함수  (0) 2019.03.16