scrolling_20a_20list_20box

Scrolling a list box

by Richard Russell, March 2007

You can scroll the contents of a list box, under the control of your own program, by sending it a WM_VSCROLL message. The simple program below illustrates the use of that technique:

        INSTALL @lib$+"WINLIB5"
 
        WS_VSCROLL = &200000
        WS_BORDER = &800000
        LB_ADDSTRING = 384
        WM_VSCROLL = 277
        SB_BOTTOM = 7
 
        hlist%=FN_listbox("", 20, 20, 200, 200, 1, WS_VSCROLL + WS_BORDER)
 
        REPEAT
          WAIT 50
          item% += 1
          SYS "SendMessage", hlist%, LB_ADDSTRING, 0, "Line "+STR$item%
          SYS "SendMessage", hlist%, WM_VSCROLL, SB_BOTTOM, 0
        UNTIL FALSE

Here the SB_BOTTOM scroll command is sent, which causes the list box to scroll so the last item is in view. The full set of commands is as follows:

        SB_LINEUP = 0   : REM Scrolls one line up
        SB_LINEDOWN = 1 : REM scrolls one line down
        SB_PAGEUP = 2   : REM Scrolls one page up
        SB_PAGEDOWN = 3 : REM Scrolls one page down
        SB_TOP = 6      : REM Scrolls to the top
        SB_BOTTOM = 7   : REM scrolls to the bottom

The code shown is appropriate for scrolling a list box on your main window. You can similarly scroll a listbox within a dialogue box by using SendDlgItemMessage as below:

        SYS "SendDlgItemMessage", !dlg%, idlist%, WM_VSCROLL, SB_BOTTOM, 0
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
scrolling_20a_20list_20box.txt · Last modified: 2024/01/05 00:21 by 127.0.0.1