_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