- int position = ::GetScrollPos((HWND) control, SB_CTL);
- int minPos, maxPos;
- ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos);
+ // current and max positions
+ int position,
+ maxPos, trackPos = pos;
+
+ // when we're dragging the scrollbar we can't use pos parameter because it
+ // is limited to 16 bits
+ // JACS: now always using GetScrollInfo, since there's no reason
+ // not to
+// if ( wParam == SB_THUMBPOSITION || wParam == SB_THUMBTRACK )
+ {
+ SCROLLINFO scrollInfo;
+ wxZeroMemory(scrollInfo);
+ scrollInfo.cbSize = sizeof(SCROLLINFO);
+
+ // also get the range if we call GetScrollInfo() anyhow -- this is less
+ // expensive than call it once here and then call GetScrollRange()
+ // below
+ scrollInfo.fMask = SIF_RANGE | SIF_POS | SIF_TRACKPOS;
+
+ if ( !::GetScrollInfo(GetHwnd(), SB_CTL, &scrollInfo) )
+ {
+ wxLogLastError(_T("GetScrollInfo"));
+ }
+
+ trackPos = scrollInfo.nTrackPos;
+ position = scrollInfo.nPos;
+ maxPos = scrollInfo.nMax;
+ }
+#if 0
+ else
+ {
+ position = ::GetScrollPos((HWND) control, SB_CTL);
+ int minPos;
+ ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos);
+ }
+#endif