GSI

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);
이 함수를 호출하면 화면이 이동 되도록 해봤습니다. 결과는 아래와 같아요.^^

사용자 삽입 이미지

Posted by gsi
: