The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: Farabi on May 25, 2010, 03:25:14 AM

Title: Vertical Scroll fot listbox
Post by: Farabi on May 25, 2010, 03:25:14 AM
How to activate vertical scroll bar for listbox?
Title: Re: Vertical Scroll fot listbox
Post by: MichaelW on May 25, 2010, 09:01:28 AM
Specify the WS_VSCROLL style, possibly combined with LBS_DISABLENOSCROLL?
Title: Re: Vertical Scroll fot listbox
Post by: Farabi on May 25, 2010, 01:38:27 PM
Quote from: MichaelW on May 25, 2010, 09:01:28 AM
Specify the WS_VSCROLL style, possibly combined with LBS_DISABLENOSCROLL?

I did, but the vertical scroll did not appear when the text is more than what displayed. What mistake I did?
Title: Re: Vertical Scroll fot listbox
Post by: MichaelW on May 25, 2010, 06:42:53 PM
It works for me:

;==============================================================================
    include \masm32\include\masm32rt.inc
;==============================================================================

LBADDS MACRO h,s
  invoke SendMessage, h, LB_ADDSTRING, 0, reparg(s)
ENDM

;==============================================================================

IDC_LST1  equ 101
IDC_LST2  equ 102
IDC_BTN1  equ 103
IDC_BTN2  equ 104

;==============================================================================
    .data
      hwndLst1 dd 0
      hwndLst2 dd 0
    .code
;==============================================================================

DlgProc proc hwndDlg:dword, uMsg:dword, wParam:dword, lParam:dword

    SWITCH uMsg

      CASE WM_INITDIALOG

        invoke GetDlgItem, hwndDlg, IDC_LST1
        mov hwndLst1, eax
        invoke GetDlgItem, hwndDlg, IDC_LST2
        mov hwndLst2, eax

      CASE WM_COMMAND

        SWITCH wParam

          CASE IDCANCEL

            invoke EndDialog, hwndDlg, 0

          CASE IDC_BTN1

            LBADDS hwndLst1, "XXXXXXXXXXXXX"
            LBADDS hwndLst2, "XXXXXXXXXXXXX"

          CASE IDC_BTN2

            invoke SendMessage, hwndLst1, LB_GETCOUNT, 0 ,0
            dec eax
            invoke SendMessage, hwndLst1, LB_DELETESTRING, eax, 0

            invoke SendMessage, hwndLst2, LB_GETCOUNT, 0 ,0
            dec eax
            invoke SendMessage, hwndLst2, LB_DELETESTRING, eax, 0

        ENDSW

      CASE WM_CLOSE

        invoke EndDialog, hwndDlg, 0

    ENDSW

    xor   eax, eax
    ret

DlgProc endp

;==============================================================================
start:
;==============================================================================

    Dialog "Test", \
           "MS Sans Serif",10, \
           WS_OVERLAPPED or WS_SYSMENU or DS_CENTER, \
           4,0,0,160,120,1024

    DlgList WS_BORDER or WS_VSCROLL, \
            7,7,68,79,IDC_LST1

    DlgList WS_BORDER or WS_VSCROLL or LBS_DISABLENOSCROLL, \
            82,7,68,79,IDC_LST2

    DlgButton "Add",0,72,89,35,12,IDC_BTN1

    DlgButton "Remove",0,115,89,35,12,IDC_BTN2

    invoke GetModuleHandle, NULL
    CallModalDialog eax,0,DlgProc,NULL

    exit
;==============================================================================
end start
Title: Re: Vertical Scroll fot listbox
Post by: Farabi on May 26, 2010, 12:08:18 AM
Here is how i Create the listbos


mov   edx, WS_VSCROLL or WS_HSCROLL or WS_VISIBLE or \
              WS_BORDER or WS_CHILD or \
              LBS_HASSTRINGS or LBS_NOINTEGRALHEIGHT or \
              LBS_DISABLENOSCROLL
    invoke CreateWindowEx,WS_EX_CLIENTEDGE,CADD("ListBox"),NULL,edx,300,80,280,150,hWnd,3,hInstance,NULL
Title: Re: Vertical Scroll fot listbox
Post by: Farabi on May 26, 2010, 12:50:07 AM
Sorry I mean horizontal, vertical work for me.
Title: Re: Vertical Scroll fot listbox
Post by: Gunner on May 26, 2010, 01:21:45 AM
That is an easy one.. set the listbox sytle LBS_MULTICOLUMN  :bg

if you want you can set the "colum" width to something bigger than your listbox to show the scrollbar
LB_SETCOLUMNWIDTH

but just setting  LBS_MULTICOLUMN should work fine...  :8)
Title: Re: Vertical Scroll fot listbox
Post by: Farabi on May 26, 2010, 03:07:35 AM
Okay thanks.