[MFC] OnVScroll() 스크롤 위치값 보정하기 - 특정 단위로 움직이게...
MFC&ActiveX 2007. 12. 21. 08:09 |CScrollView를 사용해서 화면을 처리 하다 보면 셀 단위의 뷰를구현할때 즉, 화면이 일정 범위의 간격을 두고 움직이고자 할때 스크롤 바를 움직이면 한픽셀씩 움직이지 않고 한 단위씩 움직이도록 하고자 할때가 있다. 이때는 OnVScroll()를 오버라이드 한다.
void CColorPlayScrollView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
UINT newpos = 0;
switch(nSBCode) {
case SB_LINEUP:
case SB_LINEDOWN:
case SB_PAGEUP:
case SB_PAGEDOWN:
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
case SB_TOP:
case SB_BOTTOM:
case SB_ENDSCROLL:
{
if(nPos%30 == 0) {
// SetScrollPos(SB_VERT,nPos,TRUE);
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
}
break;
}
// SetScrollPos(SB_VERT,newpos,TRUE);
// CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
여기서 모든 메시지를 가져와서 해당 값이 되었을때만 호출하도록 처리 해봤습니다.
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
이 함수를 호출하면 화면이 이동 되도록 해봤습니다. 결과는 아래와 같아요.^^