1:滚动对话框内容,SetScrollInfo窗口句柄为对话框的
初始化: ScrollInfo.cbSize = sizeof(SCROLLINFO); ScrollInfo.fMask = SIF_RANGE|SIF_POS|SIF_PAGE; ScrollInfo.nMin = 0; ScrollInfo.nMax = 300; ScrollInfo.nPage = 60; ScrollInfo.nPos = 0; SetScrollInfo(hDlg, SB_VERT, &ScrollInfo, TRUE);
void OnVScroll(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { int nScrollCode = (int)LOWORD(wParam); SCROLLINFO ScrollInfo; static int nNewPos=0; int nOldTop = nNewPos;
memset(&ScrollInfo,0,sizeof(ScrollInfo)); ScrollInfo.cbSize = sizeof(SCROLLINFO); ScrollInfo.fMask = SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS; GetScrollInfo(hWnd, SB_VERT, &ScrollInfo);
switch (nScrollCode) { case SB_LINEUP: nNewPos -= 75; break; case SB_PAGEUP: nNewPos -= 75; break; case SB_LINEDOWN: nNewPos += 75; break; case SB_PAGEDOWN: nNewPos += 75; break; case SB_TOP: nNewPos = ScrollInfo.nMin; break; case SB_BOTTOM: nNewPos = ScrollInfo.nMax-1; break; case SB_THUMBPOSITION: nNewPos = ScrollInfo.nTrackPos; break; case SB_THUMBTRACK: case SB_ENDSCROLL: return; break; }
if(nNewPos < ScrollInfo.nMin) nNewPos = ScrollInfo.nMin; else if(nNewPos >= ScrollInfo.nMax) nNewPos = ScrollInfo.nMax -1;
if(nOldTop == nNewPos) return;
ScrollInfo.cbSize = sizeof(SCROLLINFO); ScrollInfo.fMask = SIF_RANGE|SIF_POS|SIF_PAGE; ScrollInfo.nPos = nNewPos; ScrollInfo.nMin = 0; ScrollInfo.nMax = 300; ScrollInfo.nPage = 60; SetScrollInfo(hWnd, SB_VERT, &ScrollInfo, TRUE); ScrollWindowEx(hWnd,0, nOldTop-nNewPos, NULL, NULL,NULL, NULL, SW_SCROLLCHILDREN);
} |
2:滚动条控件,将SetScrollInfo的参数设为SB_CTL
3:SetScrollRange,将参数nMinPos,nMaxPos设为0,则可将滚动条隐藏