nMax = SCROLL_MAX(si); // 滚动条滑块左端最多只能滚动到nMax处而非si.nMax处, si.nMax是对于滚动条滑块右端来说的。另外, 当垂直滚动条消失时, 该值还会减小,因为此时si.nPage的值会增大
/* // 小实验: // 如果强行用SetScrollPos设置超过SCROLL_MAX但小于si.nMax的值 // 那么在GetScrollPos的时候得到的值会自动减小为SCROLL_MAX // 这说明si.nMax是一个虚值,滚动条的位置根本就不可能到达该值,最大只能到达SCROLL_MAX case WM_LBUTTONDOWN: si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_ALL; GetScrollInfo(hWnd, SB_HORZ, &si); nMax = SCROLL_MAX(si); nNewPos = nMax + 10; SetScrollPos(hWnd, SB_HORZ, nNewPos, TRUE); nMax = GetScrollPos(hWnd, SB_HORZ); sprintf_s(text, "setpos: %d, getpos: %d, si.nMax = %d", nNewPos, nMax, si.nMax); SetWindowTextA(hWnd, text); break;*/
|