CScrollView의 윈도우의 ScrollBar는 윈도 개발 초기에 SHORT형 자료형을 기반으로 개발되었기 때문에 scrollbar의 thumb을 잡고 이동할때 32767을 넘는 순간 오동작을 하게 된다.
이 경우 아래와 같이 WM_HSCROLL과 WM_VSCROLL을 핸들링해서 아래 코드를 집어 넣으면 간단히 해결된다.
void CDemoView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { SCROLLINFO si = { 0, }; si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_ALL; GetScrollInfo(SB_HORZ, &si); nPos = si.nTrackPos; CScrollView::OnHScroll(nSBCode, nPos, pScrollBar); } void CDemoView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { SCROLLINFO si = { 0, }; si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_ALL; GetScrollInfo(SB_VERT, &si); nPos = si.nTrackPos; CScrollView::OnVScroll(nSBCode, nPos, pScrollBar); }
위 방법은 CScrollview를 사용할 때의 이야기고, CScrollBarCtrl 클래스르 직접 사용하거나
혹은, CScrollView가 아닌 다른 View에서 문제를 봉착하였을 경우 GetScrollInfo()함수를 이용하여 적당히 처리하면 해결할 수 있다.
'I ♥ Programming' 카테고리의 다른 글
std::string 클래스에 snprintf 함수 적용한다. (0) | 2014.08.16 |
---|---|
현재 웹페이지에 있는 이메일 주소를 모두 가져오는 자바스크립트 소스(함수) (0) | 2014.07.05 |
영상처리 할 때 필요한 double형 size, point, rect 클래스.. (0) | 2014.06.17 |
[본문스크랩] Visual Studio 2008 Professional Trial 버전 날짜제한 우회방법 (0) | 2014.05.13 |
델파이에서 Windows7용 소리 조절(XP 동시지원) 클래스(볼륨 믹서) (0) | 2014.05.03 |