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;*/
|