Функция _GUICtrlListBox_Create

         Описание функции


_GUICtrlListBox_Create

Создаёт элемент ListBox

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

Параметры

$hWnd Дескриптор родительского окна или окна владельца
$sText Строка для добавления
$iX Координата левого края
$iY Координата верхнего края
$iWidth [необязательный] Ширина элемента
$iHeight [необязательный] Высота элемента
$iStyle [необязательный] Стиль элемента:
    $LBS_COMBOBOX - Уведомляет ListBox, что он является частью ComboBox
    $LBS_DISABLENOSCROLL - Отображает скрытую вертикальную полосу прокрутки, даже если список содержит недостаточное количество пунктов, чтобы прокручивать.
    $LBS_EXTENDEDSEL - Позволяет выбрать несколько пунктов одновременно.
    $LBS_HASSTRINGS - Указывает, что список содержит пункты, состоящие из строк, и позволяет получить текст строки, используя сообщение LB_GETTEXT
    $LBS_MULTICOLUMN - Список из нескольких колонок, который можно прокручивать по горизонтали.
    $LBS_MULTIPLESEL - Позволяет выбрать несколько пунктов. При каждом клике на пункте выполняется инвертирование выбора.
    $LBS_NODATA - Определяет ListBox без данных
    $LBS_NOINTEGRALHEIGHT - Список точно указанной высоты. Без этого стиля элемент подстраивает свою высоту кратно высоте строк, не допуская частичного отображения строки.
    $LBS_NOREDRAW - Определяет, что ListBox не обновляется, при внесении изменений
    $LBS_NOSEL - Разрешает просматривать пункты в ListBox, но не позволяет выбрать их.
    $LBS_NOTIFY - Уведомляет родительское окно при каждом одинарном или двойном клике на пункте.
    $LBS_OWNERDRAWFIXED - Определяет, что владелец списка ответственен за прорисовку его содержания, и что пункты в списке равной высоты.
    $LBS_OWNERDRAWVARIABLE - Определяет, что владелец списка ответственен за прорисовку его содержания, и что пункты в списке разной высоты.
    $LBS_SORT - Пункты в списке сортируются по алфавиту.
    $LBS_STANDARD - Стандартный стиль. Содержит стили LBS_NOTIFY, LBS_SORT, WS_VSCROLL, WS_BORDER     $LBS_USETABSTOPS - Разрешает распознавание Tab (табуляции) в строке пункта.
    $LBS_WANTKEYBOARDINPUT - Указывает, что владелец списка получает сообщение WM_VKEYTOITEM
    По умолчанию: $LBS_SORT, $WS_HSCROLL, $WS_VSCROLL, $WS_BORDER     Принудительно: $WS_CHILD, $WS_TABSTOP, $WS_VISIBLE, $LBS_NOTIFY
$iExStyle [необязательный] Расширенный стиль элемента. Соответствует стандартным константам $WS_EX_.
По умолчанию: $WS_EX_CLIENTEDGE

Возвращаемое значение

Успех:Возвращает дескриптор элемента ListBox
Ошибка:Возвращает 0

Примечания

Эта функция предназначена для опытных пользователей и для изучения того, как элемент работает.

См. также

_GUICtrlListBox_Destroy

Пример

#include <GuiListBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

$Debug_LB = False ; Проверяет ClassName передаваемый в ListBox функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

Global $hListBox

_Main()

Func _Main()
    Local $hGUI

    ; Создаёт GUI
    $hGUI = GUICreate("Создаёт ListBox с помощью UDF", 400, 296)
    $hListBox = _GUICtrlListBox_Create($hGUI, "Строка при создании", 2, 2, 396, 296)
    GUISetState()

    MsgBox(4160, "Информация", "Добавление пунктов")

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    ; Добавляет файлы
    _GUICtrlListBox_BeginUpdate($hListBox)
    _GUICtrlListBox_ResetContent($hListBox)
    _GUICtrlListBox_InitStorage($hListBox, 100, 4096)
    _GUICtrlListBox_Dir($hListBox, @WindowsDir & "\win*.exe")
    _GUICtrlListBox_AddFile($hListBox, @WindowsDir & "\Notepad.exe")
    _GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES)
    _GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES, False)
    _GUICtrlListBox_EndUpdate($hListBox)

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; младшее слово
    $iCode = BitShift($iwParam, 16) ; старшее слово

    Switch $hWndFrom
        Case $hListBox, $hWndListBox
            Switch $iCode
                Case $LBN_DBLCLK ; Высылается, когда пользователь сделал двойной клик на строке ListBox
                    _DebugPrint("$LBN_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
                Case $LBN_ERRSPACE ; Высылается, когда ListBox не может выделить достаточно памяти для выполнения определённого запроса
                    _DebugPrint("$LBN_ERRSPACE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
                Case $LBN_KILLFOCUS ; Высылается, когда ListBox теряет фокус
                    _DebugPrint("$LBN_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
                Case $LBN_SELCANCEL ; Высылается, когда пользователь отменяет выбор в ListBox
                    _DebugPrint("$LBN_SELCANCEL" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
                Case $LBN_SELCHANGE ; Высылается, когда выбор в ListBox изменяется
                    _DebugPrint("$LBN_SELCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
                Case $LBN_SETFOCUS ; Высылается, когда ListBox получает фокус
                    _DebugPrint("$LBN_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
            EndSwitch
    EndSwitch
    ; Продолжение обработчика внутренних команд AutoIt3.
    ; Вы также можете завершить, используя строку с выходом из функции.
    ; !!! Но только 'Return' (без значения) без продолжения
    ; обработчика внутренних команд AutoIt3 в дальнейшем !!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Func _DebugPrint($s_text)
    $s_text = StringReplace($s_text, @LF, @LF & "-->")
    ConsoleWrite("!===========================================================" & @LF & _
            "+===========================================================" & @LF & _
            "-->" & $s_text & @LF & _
            "+===========================================================" & @LF)
EndFunc   ;==>_DebugPrint