MFC 작업 하다 보면 은근히 머리 아픈게 스크롤이다..
하지면 막상 해보면 별것 없다. =ㅅ=
____________________________________________________________________________________
스크롤 의 크기를 세팅 하는 함수 (기본적으로 OnSize 함수에서 사용하면 된다..)
void CCustumClass::settingScroll()
{
// 작업 가로/ 세로 길이
int iWidth = // 사용할 스크롤 의 가로 길이 ( 이미지 라면 이미지 가로 사이즈를 넣어주면 된다.)
int iHeight= // 사용할 스크롤 의 세로 길이 ( 이미지 라면 이미지 세로 사이즈를 넣어주면 된다.)
// 윈도우 렉트
CRect rt;
GetClientRect( &rt );
// 스크롤 정보
SCROLLINFO si;
si.cbSize = sizeof( si );
si.fMask = SIF_ALL;
///////////////////////////////////////////////////////
// 세로
if(rt.Height() < iHeight)
{
si.nMin = 0;
si.nMax = iHeight;
si.nPage = rt.Height();
si.nPos = GetScrollPos(SB_VERT);;
SetScrollInfo( SB_VERT, &si, TRUE );
ShowScrollBar(SB_VERT, TRUE);
}
else
{
ShowScrollBar(SB_VERT, FALSE);
}
///////////////////////////////////////////////////////
// 가로
if(rt.Width() < iWidth)
{
si.nMin = 0;
si.nMax = iWidth;
si.nPage = rt.Width();
si.nPos = GetScrollPos(SB_HORZ);;
SetScrollInfo( SB_HORZ, &si, TRUE );
ShowScrollBar(SB_HORZ, TRUE);
}
else
{
ShowScrollBar(SB_HORZ, FALSE);
}
}
void CCustumClass ::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if( pScrollBar == NULL )
{
switch( nSBCode )
{
case SB_LINELEFT:
break;
case SB_LINERIGHT:
break;
case SB_PAGELEFT:
break;
case SB_PAGERIGHT:
break;
case SB_THUMBPOSITION:
break;
case SB_THUMBTRACK:
break;
case SB_LEFT:
break;
case SB_RIGHT:
break;
case SB_ENDSCROLL:
return; // 처리 해주지 않으면 계속 리셋...
break;
};
}
SetScrollPos(SB_VERT, nPos);
// 작업 처리.
// .....
CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CCustumClass ::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if( pScrollBar == NULL )
{
switch( nSBCode )
{
case SB_LINELEFT:
break;
case SB_LINERIGHT:
break;
case SB_PAGELEFT:
break;
case SB_PAGERIGHT:
break;
case SB_THUMBPOSITION:
break;
case SB_THUMBTRACK:
break;
case SB_LEFT:
break;
case SB_RIGHT:
break;
case SB_ENDSCROLL:
return; // 처리 해주지 않으면 계속 리셋...
break;
};
}
SetScrollPos(SB_HORZ, nPos);
// 작업 처리.
// .....
CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}
[출처] [MFC]CWnd 스크롤 제어 하기|작성자 핵이
'[ Programing ] > MFC' 카테고리의 다른 글
CListCtrl 스크롤 이동, 현재 행 선택 (0) | 2013.05.21 |
---|---|
ClistCtrl 리스트컨트롤 체크박스 체크 여부 검사 방법 (0) | 2013.05.21 |
파일저장시 경로 보존 - CFileDialog (0) | 2013.05.21 |
CMFCPropertyGridCtrl 메시지 처리하기 (0) | 2013.05.21 |
[MFC]ClistCtrl 리스트컨트롤 체크박스 체크 여부 검사 방법 (1) | 2013.05.21 |