void CDialogLAMP::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO scrollinfo; GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); switch (nSBCode) { case SB_BOTTOM: ScrollWindow(0, (scrollinfo.nPos - scrollinfo.nMax) * 10); scrollinfo.nPos = scrollinfo.nMax; SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); break; case SB_TOP: ScrollWindow(0, (scrollinfo.nPos - scrollinfo.nMin) * 10); scrollinfo.nPos = scrollinfo.nMin; SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); break; case SB_LINEUP: scrollinfo.nPos -= 1; if (scrollinfo.nPos < scrollinfo.nMin) { scrollinfo.nPos = scrollinfo.nMin; break; } SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); ScrollWindow(0, 10); break; case SB_LINEDOWN: scrollinfo.nPos += 1; if (scrollinfo.nPos > scrollinfo.nMax) { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); ScrollWindow(0, -10); break; case SB_PAGEUP: scrollinfo.nPos -= 5; if (scrollinfo.nPos < scrollinfo.nMin) { scrollinfo.nPos = scrollinfo.nMin; break; } SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); ScrollWindow(0, 10 * 5); break; case SB_PAGEDOWN: scrollinfo.nPos += 5; if (scrollinfo.nPos > scrollinfo.nMax) { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); ScrollWindow(0, -10 * 5); break; case SB_ENDSCROLL: // MessageBox("SB_ENDSCROLL"); break; case SB_THUMBPOSITION: // ScrollWindow(0,(scrollinfo.nPos-nPos)*10); // scrollinfo.nPos = nPos; // SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); break; case SB_THUMBTRACK: ScrollWindow(0, (scrollinfo.nPos - nPos) * 10); scrollinfo.nPos = nPos; SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); break; } CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar); }
时间: 2024-10-13 11:48:26