# Function Reference

# _GUICtrlListBox_Create

Create a Listbox control

#include <GuiListBox.au3>
_GUICtrlListBox_Create ( $hWnd, $sText, $iX, $iY [, $iWidth = 100 [, $iHeight = 200 [, $iStyle = 0x00B00002 [, $iExStyle = 0x00000200]]]] )

## Parameters

$hWnd | Handle to parent or owner window
$sText | String to add to the combobox
$iX | Horizontal position of the control
$iY | Vertical position of the control
$iWidth | [optional] Control width
$iHeight | [optional] Control height
$iStyle | [optional] Control style: $LBS_COMBOBOX - Notifies a list box that it is part of a combo box $LBS_DISABLENOSCROLL - Shows a disabled vertical scroll bar $LBS_EXTENDEDSEL - Allows multiple items to be selected $LBS_HASSTRINGS - Specifies that a list box contains items consisting of strings $LBS_MULTICOLUMN - Specifies a multi columnn list box that will be scrolled horizontally $LBS_MULTIPLESEL - Turns string selection on or off each time the user clicks a string $LBS_NODATA - Specifies a no-data list box $LBS_NOINTEGRALHEIGHT - Specifies that the size is exactly the size set by the application $LBS_NOREDRAW - Specifies that the list box's appearance is not updated when changes are made $LBS_NOSEL - Specifies that the list box contains items that can be viewed but not selected $LBS_NOTIFY - Notifies whenever the user clicks or double clicks a string $LBS_OWNERDRAWFIXED - Specifies that the list box is owner drawn $LBS_OWNERDRAWVARIABLE - Specifies that the list box is owner drawn with variable height $LBS_SORT - Sorts strings in the list box alphabetically $LBS_STANDARD - Standard list box style $LBS_USETABSTOPS - Enables a list box to recognize and expand tab characters $LBS_WANTKEYBOARDINPUT - Specifies that the owner receives WM_VKEYTOITEM messages Default: $LBS_SORT, $WS_HSCROLL, $WS_VSCROLL, $WS_BORDER Forced : $WS_CHILD, $WS_TABSTOP, $WS_VISIBLE, $LBS_NOTIFY
$iExStyle | [optional] Control extended style. These correspond to the standard $WS_EX_* constants. See Extended Style Table. Default: $WS_EX_CLIENTEDGE

## Return Value

Success: | the handle to the Listbox control.
Failure: | 0.

## Remarks

This function is for Advanced users and for learning how the control works.

## Related

_GUICtrlListBox_Destroy

## Example

### Example : Created with UDF

    #include "Extras\WM_NOTIFY.au3"

    #include <DirConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListBox.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsNotifsConstants.au3>

    Global $g_hListBox

    Example()

    Func Example()
        ; Create GUI
        Local $hGUI = GUICreate("ListBox Create (v" & @AutoItVersion & ")", 400, 296)
        $g_hListBox = _GUICtrlListBox_Create($hGUI, "String upon creation", 2, 2, 396, 296)
        GUISetState(@SW_SHOW)

        MsgBox($MB_SYSTEMMODAL, "Information", "Adding Items")

        GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

        ; Add files
        _GUICtrlListBox_BeginUpdate($g_hListBox)
        _GUICtrlListBox_ResetContent($g_hListBox)
        _GUICtrlListBox_InitStorage($g_hListBox, 100, 4096)
        _GUICtrlListBox_Dir($g_hListBox, @WindowsDir & "\win*.exe")
        _GUICtrlListBox_AddFile($g_hListBox, @WindowsDir & "\notepad.exe")
        _GUICtrlListBox_Dir($g_hListBox, "", $DDL_DRIVES)
        _GUICtrlListBox_Dir($g_hListBox, "", $DDL_DRIVES, False)
        _GUICtrlListBox_EndUpdate($g_hListBox)

        ; Loop until the user exits.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc   ;==>Example

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg
        Local $hWndListBox = $g_hListBox
        If Not IsHWnd($g_hListBox) Then $hWndListBox = GUICtrlGetHandle($g_hListBox)
        Local $hWndFrom = $lParam
        Local $iIDFrom = BitAND($wParam, 0xFFFF) ; Low Word
        Local $iCode = BitShift($wParam, 16) ; Hi Word

        Switch $hWndFrom
            Case $g_hListBox, $hWndListBox
                Switch $iCode
                    Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
                        _WM_NOTIFY_DebugInfo("$LBN_DBLCLK", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                    Case $LBN_ERRSPACE ; Sent when a list box cannot allocate enough memory to meet a specific request
                        _WM_NOTIFY_DebugInfo("$LBN_ERRSPACE", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                    Case $LBN_KILLFOCUS ; Sent when a list box loses the keyboard focus
                        _WM_NOTIFY_DebugInfo("$LBN_KILLFOCUS", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                    Case $LBN_SELCANCEL ; Sent when the user cancels the selection in a list box
                        _WM_NOTIFY_DebugInfo("$LBN_SELCANCEL", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                    Case $LBN_SELCHANGE ; Sent when the selection in a list box has changed
                        _WM_NOTIFY_DebugInfo("$LBN_SELCHANGE", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                    Case $LBN_SETFOCUS ; Sent when a list box receives the keyboard focus
                        _WM_NOTIFY_DebugInfo("$LBN_SETFOCUS", "hWndFrom,IDFrom", $hWndFrom, $iIDFrom)
                        ; no return value
                EndSwitch
        EndSwitch
        ; Proceed the default AutoIt3 internal message commands.
        ; You also can complete let the line out.
        ; !!! But only 'Return' (without any value) will not proceed
        ; the default AutoIt3-message in the future !!!
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND