Функция _GUICtrlToolbar_Create

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


_GUICtrlToolbar_Create

Создаёт Toolbar

#include <GuiToolBar.au3>
_GUICtrlToolbar_Create($hWnd [, $iStyle = 0x00000800 [, $iExStyle = 0x00000000]])

Параметры

$hWnd Дескриптор родительского окна или окна владельца
$iStyle [необязательный] Стили Toolbar:
    $TBSTYLE_ALTDRAG - Позволяет пользователю изменять положение кнопки Toolbar перетаскивая их удерживая нажатой клавишу ALT. Если этот стиль не указан, пользователь должен удерживать нажатой клавишу Shift при перетаскивании кнопки.
    Обратите внимание, что стиль $CCS_ADJUSTABLE должен быть указан, чтобы активировать перетаскивание кнопок Toolbar.
    $TBSTYLE_CUSTOMERASE - Высылает сообщение $NM_CUSTOMDRAW, когда Toolbar обрабатывает сообщение $WM_ERASEBKGND.
    $TBSTYLE_FLAT - Создаёт плоскую панель инструментов
    $TBSTYLE_LIST - Создаёт плоскую панель инструментов, в которой текст кнопок справа от изображения
    $TBSTYLE_REGISTERDROP - Высылает уведомление $TBN_GETOBJECT запрашивающее целевой объект перетаскивания, когда курсор перемещается над кнопкой Toolbar
    $TBSTYLE_TOOLTIPS - Создает элемент всплывающей подсказки (ToolTip), с помощью которого приложение может отобразить описывающий текст кнопки Toolbar.
    $TBSTYLE_TRANSPARENT - Создаёт прозрачную панель инструментов. В прозрачном Toolbar, прозрачным является сам Toolbar, но не кнопки на нём. Текст кнопки появляется под рисунком кнопки. Чтобы предотвратить проблемы перекрашивания, этот стиль должен быть установлен до того, как Toolbar становится видимым.
    $TBSTYLE_WRAPABLE - Создает панель инструментов, которая может иметь несколько рядов кнопок. Кнопки панели инструментов можно переносить на следующую строку, когда панель инструментов становится слишком узкой, чтобы уместить все кнопки на одной строке. Когда Toolbar переносится, разрыв будет происходить на любом самым крайнем справа разделителе или кнопке, если нет разделителей на панели. Этот стиль должен быть установлен как вертикальный Toolbar, когда Toolbar является частью вертикального Rebar.
    По умолчанию: $TBSTYLE_FLAT     Принудительно: $WS_CHILD, $WS_CLIPSIBLINGS, $WS_VISIBLE
$iExStyle [необязательный] Расширенные стили Toolbar:
    $TBSTYLE_EX_DRAWDDARROWS - Позволяет кнопкам иметь отдельную стрелку вниз для выпадающего вниз меню. Кнопки, которые имеют стиль $BTNS_DROPDOWN будут нарисованы со стрелкой вниз в отдельной секции справа от кнопки.
    Если стрелка кликнута, только часть кнопки со стрелкой будет вдавленной, и Toolbar вышлет уведомление $TBN_DROPDOWN для запроса приложению отобразить выпадающее вниз меню. Если кликнута основная часть кнопки, то Toolbar вышлет сообщение $WM_COMMAND с идентификатором кнопки.
    $TBSTYLE_EX_HIDECLIPPEDBUTTONS - Скрывает частично подрезанные кнопки
    $TBSTYLE_EX_DOUBLEBUFFER - Задаёт двойную буферизацию для Toolbar
    $TBSTYLE_EX_MIXEDBUTTONS - Позволяет установить текст для всех кнопок, но отображать его, только для кнопок со стилем $BTNS_SHOWTEXT. Стиль $TBSTYLE_LIST также должен быть установлен. Обычно когда кнопка не отображается текст, необходимо обрабатывать уведомление $TBN_GETINFOTIP для отображения всплывающей подсказки (ToolTip). С расширенным стилем $TBSTYLE_EX_MIXEDBUTTONS, текст, который установлен, но не отображается на кнопке будет автоматически использоваться как текст всплывающей подсказки (ToolTip) кнопки. Необходимо только обработать уведомление $TBN_GETINFOTIP если необходимо большей гибкости для определения текста всплывающей подсказки (ToolTip).

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

Успех:Возвращает дескриптор Toolbar
Ошибка:Возвращает 0

См. также

_GUICtrlToolbar_Destroy

Пример

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

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

Global $hToolbar, $iMemo
Global $iItem ; Командный идентификатор кнопки связанный с уведомлением.
Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp

_Main()

Func _Main()
    Local $hGUI, $aSize

    ; Создаёт GUI
    $hGUI = GUICreate(StringTrimRight(@ScriptName, 4), 600, 400)
    $hToolbar = _GUICtrlToolbar_Create($hGUI)
    $aSize = _GUICtrlToolbar_GetMaxSize($hToolbar)

    $iMemo = GUICtrlCreateEdit("", 2, $aSize[1] + 20, 596, 396 - ($aSize[1] + 20), $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

    ; Добавляет стандартный системный bitmaps
    _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)

    ; Добавляет кнопки
    _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW)
    _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN)
    _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)
    _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP)

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

EndFunc   ;==>_Main

; Записывает строку в элемент для заметок
Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

; Обработчик уведомлений - WM_NOTIFY
Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tNMHDR, $hwndFrom, $code, $i_idNew, $dwFlags, $i_idOld ; , $idFrom
    Local $tNMTBHOTITEM
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    ; $idFrom = DllStructGetData($tNMHDR, "IDFrom")
    $code = DllStructGetData($tNMHDR, "Code")
    Switch $hwndFrom
        Case $hToolbar
            Switch $code
                Case $NM_LDOWN
                    ;----------------------------------------------------------------------------------------------
                    MemoWrite("$NM_LDOWN: Кликнут элемент: " & $iItem & " с индексом: " & _GUICtrlToolbar_CommandToIndex($hToolbar, $iItem))
                    ;----------------------------------------------------------------------------------------------
                Case $TBN_HOTITEMCHANGE
                    $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
                    $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
                    $i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
                    $iItem = $i_idNew
                    $dwFlags = DllStructGetData($tNMTBHOTITEM, "dwFlags")
                    If BitAND($dwFlags, $HICF_LEAVING) = $HICF_LEAVING Then
                        MemoWrite("$HICF_LEAVING: " & $i_idOld)
                    Else
                        Switch $i_idNew
                            Case $idNew
                                ;----------------------------------------------------------------------------------------------
                                MemoWrite("$TBN_HOTITEMCHANGE: $idNew")
                                ;----------------------------------------------------------------------------------------------
                            Case $idOpen
                                ;----------------------------------------------------------------------------------------------
                                MemoWrite("$TBN_HOTITEMCHANGE: $idOpen")
                                ;----------------------------------------------------------------------------------------------
                            Case $idSave
                                ;----------------------------------------------------------------------------------------------
                                MemoWrite("$TBN_HOTITEMCHANGE: $idSave")
                                ;----------------------------------------------------------------------------------------------
                            Case $idHelp
                                ;----------------------------------------------------------------------------------------------
                                MemoWrite("$TBN_HOTITEMCHANGE: $idHelp")
                                ;----------------------------------------------------------------------------------------------
                        EndSwitch
                    EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY