OWL NExt - Knowledge Base

[ Home | Contents | Search | Next | Previous | Up ]

Scrolling a window with 32,767 units?

Date: 11/30/99
Time: 12:13:43 AM


Q. I am using TScroller for a window that has > 32,767 pixels, vertically. Anyone successful at this?

A.    In my program I scroll windows by delta not by pixel, user don't have patient to scroll 32000 pixels but if you wish here part from Win32 help :

The GetScrollInfo function enables applications to use 32-bit scroll
positions. Although the messages that indicate scroll-bar position,
WM_HSCROLL and WM_VSCROLL, provide only 16 bits of position data,
the functions SetScrollInfo and GetScrollInfo provide 32 bits of scroll-bar
position data. Thus, an application can call GetScrollInfo while
processing either the WM_HSCROLL or WM_VSCROLL messages to obtain32-bit
scroll-bar position data.

To get the 32-bit position of the scroll box (thumb) during a
SB_THUMBTRACK notification in a WM_HSCROLL or WM_VSCROLL message, call
GetScrollInfo with the SIF_TRACKPOS value in the fMask member of the
SCROLLINFO structure. The function returns the tracking position of the
scroll box in the nTrackPos member of the SCROLLINFO structure. This
allows you to get the position of the scroll box as the user moves it.
The following sample code illustrates the technique.

SCROLLINFO si;
case WM_HSCROLL:
  switch(LOWORD(wparam)){
    case SB_THUMBTRACK:
      // Initialize SCROLLINFO structure
      ZeroMemory(&si, sizeof(SCROLLINFO));
      si.cbSize = sizeof(SCROLLINFO);
      si.fMask = SIF_TRACKPOS;

      // Call GetScrollInfo to get current tracking
      // position in si.nTrackPos
     
      if (!GetScrollInfo(hwnd, SB_HORZ, &si) )
        return 1; // GetScrollInfo failed
      break;
      . . .
}

Last changed: July 14, 2001