_GUICtrlRebar_Create
Создаёт элемент Rebar
#include <GuiReBar.au3>
_GUICtrlRebar_Create($hWnd [, $iStyles = 0x513])
Параметры
$hWnd | Дескриптор родительского окна или окна владельца |
$iStyles |
[необязательный] Элемент Rebar поддерживают различные стили в дополнение к стандартным стилям окна: $RBS_AUTOSIZE - Версия 4.71. Элемент Rebar автоматически изменяет внешний вид ленты, когда размер или позиция элемента изменяется. Когда это происходит, высылается сообщение $RBN_AUTOSIZE. $RBS_BANDBORDERS - Версия 4.71. Элемент Rebar отображает тонкие линии, которые разделяют смежные ленты. $RBS_DBLCLKTOGGLE - Версия 4.71. Лента Rebar будет переключаться в развернутое или свёрнутое состояние при двойном клике мышью на ленте. Без этого стиля это действие выполняется одинарным кликом мыши. $RBS_FIXEDORDER - Version 4.70. Элемент Rebar всегда отображает ленты в одной и той же последовательности. Вы можете перемещать ленты на новую строку, но порядок следования лент остаётся неизменным. $RBS_REGISTERDROP - Версия 4.71. Элемент Rebar высылает сообщение $RBN_GETOBJECT, когда объект перетаскивается над лентой. $RBS_TOOLTIPS - Версия 4.71. Пока ещё не поддерживается $RBS_VARHEIGHT - Версия 4.71. Элемент Rebar отображает ленту минимально требуемой высоты, если это возможно. Без этого стиля, элемент Rebar отображает все ленты одинаковой высоты, используя высоту наибольшей видимой ленты для определения высоты других лент. $RBS_VERTICALGRIPPER - Версия 4.71. Размер grip будет отображаться вертикально вместо горизонтального в вертикальном элементе Rebar. Этот стиль игнорируется для Rebar без стиля $CCS_VERT. $CCS_LEFT - Version 4.70. Заставляет элемент отображаться вертикально на левой стороне родительского окна $CCS_NODIVIDER - Предотвращает двух-пиксельный отступ от в верхней части элемента $CCS_RIGHT - Version 4.70. Заставляет элемент отображаться вертикально на правой стороне родительского окна $CCS_VERT - Version 4.70. Заставляет элемент отображаться вертикально |
По умолчанию: $CCS_TOP, $RBS_VARHEIGHT Принудительно: $WS_CHILD, $WS_VISIBLE, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS |
Возвращаемое значение
Успех: | Возвращает дескриптор элемента Rebar |
Ошибка: | Устанавливает @error |
См. также
_GUICtrlRebar_DestroyПример
#include <GuiReBar.au3>
#include <GuiToolbar.au3>
#include <GuiComboBox.au3>
#include <GuiDateTimePicker.au3>
#include <GuiEdit.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
$Debug_RB = False
Global $hReBar
_Main()
Func _Main()
Local $hgui, $hToolbar, $hCombo, $hDTP, $hInput
Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp
$hgui = GUICreate(StringTrimRight(@scriptname, 4), 400, 396, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_MAXIMIZEBOX))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Создаёт элемент ReBar
$hReBar = _GUICtrlRebar_Create($hgui, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
; Создаёт элемент ToolBar, чтобы вставить его в ReBar
$hToolbar = _GUICtrlToolBar_Create($hgui, BitOR($TBSTYLE_FLAT, $CCS_NORESIZE, $CCS_NOPARENTALIGN))
; Добавляет стандартный системный bitmaps
Switch _GUICtrlToolbar_GetBitmapFlags($hToolbar)
Case 0
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_SMALL_COLOR)
Case 2
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)
EndSwitch
; Добавляет кнопки
_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)
; Создаёт раскрывающийся список, чтобы вставить его в ReBar
$hCombo = _GUICtrlComboBox_Create($hgui, "", 0, 0, 120)
_GUICtrlComboBox_BeginUpdate($hCombo)
_GUICtrlComboBox_AddDir($hCombo, @WindowsDir & "\*.exe")
_GUICtrlComboBox_EndUpdate($hCombo)
; Создаёт элемент выбора даты и времени, чтобы вставить его в ReBar
$hDTP = _GUICtrlDTP_Create($hgui, 0, 0, 190)
; Создаёт поле ввода, чтобы вставить его в ReBar
; $hInput = GUICtrlCreateInput("Поле ввода", 0, 0, 120, 20)
$hInput = _GUICtrlEdit_Create($hgui, "Поле ввода", 0, 0, 120, 20)
; default for add is append
; Добавляет ленту с элементом
_GUICtrlRebar_AddBand($hReBar, $hCombo, 120, 200, "Dir *.exe")
; Добавляет ленту с элементом выбора даты и времени
_GUICtrlRebar_AddBand($hReBar, $hDTP, 120)
; Добавляет ленту с элементом toolbar в начало ReBar
_GUICtrlRebar_AddToolBarBand($hReBar, $hToolbar, "", 0)
; Добавляет другой элемент
; _GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($hInput), 120, 200, "Заголовок:")
_GUICtrlRebar_AddBand($hReBar, $hInput, 120, 200, "Заголовок:")
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
EndFunc ;==>_Main
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
Local $tAUTOBREAK, $tAUTOSIZE, $tNMREBAR, $tCHEVRON, $tCHILDSIZE, $tOBJECTNOTIFY
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hReBar
Switch $iCode
Case $RBN_AUTOBREAK
; Уведомляет родителя ReBar, что перенос на новую линию будет появляться в ReBar. Родитель определяет, делать ли перенос
$tAUTOBREAK = DllStructCreate($tagNMREBARAUTOBREAK, $ilParam)
_DebugPrint("$RBN_AUTOBREAK" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tAUTOBREAK, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tAUTOBREAK, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tAUTOBREAK, "Code") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tAUTOBREAK, "uBand") & @LF & _
"-->wID:" & @tab & DllStructGetData($tAUTOBREAK, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tAUTOBREAK, "lParam") & @LF & _
"-->uMsg:" & @tab & DllStructGetData($tAUTOBREAK, "uMsg") & @LF & _
"-->fStyleCurrent:" & @tab & DllStructGetData($tAUTOBREAK, "fStyleCurrent") & @LF & _
"-->fAutoBreak:" & @tab & DllStructGetData($tAUTOBREAK, "fAutoBreak"))
; Возвращаемое значение не используется
Case $RBN_AUTOSIZE
; Высылается ReBar'ом, созданным со стилем $RBS_AUTOSIZE, когда ReBar автоматически изменяет свои размеры
$tAUTOSIZE = DllStructCreate($tagNMRBAUTOSIZE, $ilParam)
_DebugPrint("$RBN_AUTOSIZE" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tAUTOSIZE, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tAUTOSIZE, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tAUTOSIZE, "Code") & @LF & _
"-->fChanged:" & @tab & DllStructGetData($tAUTOSIZE, "fChanged") & @LF & _
"-->TargetLeft:" & @tab & DllStructGetData($tAUTOSIZE, "TargetLeft") & @LF & _
"-->TargetTop:" & @tab & DllStructGetData($tAUTOSIZE, "TargetTop") & @LF & _
"-->TargetRight:" & @tab & DllStructGetData($tAUTOSIZE, "TargetRight") & @LF & _
"-->TargetBottom:" & @tab & DllStructGetData($tAUTOSIZE, "TargetBottom") & @LF & _
"-->ActualLeft:" & @tab & DllStructGetData($tAUTOSIZE, "ActualLeft") & @LF & _
"-->ActualTop:" & @tab & DllStructGetData($tAUTOSIZE, "ActualTop") & @LF & _
"-->ActualRight:" & @tab & DllStructGetData($tAUTOSIZE, "ActualRight") & @LF & _
"-->ActualBottom:" & @tab & DllStructGetData($tAUTOSIZE, "ActualBottom"))
; Возвращаемое значение не используется
Case $RBN_BEGINDRAG
; Высылается ReBar'ом, когда пользователь начал перетаскивание ленты
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_BEGINDRAG" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @tab & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @tab & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @tab & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tNMREBAR, "lParam"))
Return 0 ; Позволяет ReBar'у продолжить операцию перетаскивания
;~ Return 1 ; иное, кроме ноль, чтобы прервать операцию перетаскивания
Case $RBN_CHEVRONPUSHED
; Высылается ReBar'ом, при нажатии шеврона (двойная угловая скобка)
; Когда приложение получает это уведомление, оно отвечает за отображение всплывающего меню с пунктами для каждой скрытой панели инструментов.
; Используйте поле rc структуры $tagNMREBARCHEVRON, чтобы найти правильную позицию для всплывающего меню
$tCHEVRON = DllStructCreate($tagNMREBARCHEVRON, $ilParam)
_DebugPrint("$RBN_CHEVRONPUSHED" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tCHEVRON, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tCHEVRON, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tCHEVRON, "Code") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tCHEVRON, "uBand") & @LF & _
"-->wID:" & @tab & DllStructGetData($tCHEVRON, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tCHEVRON, "lParam") & @LF & _
"-->Left:" & @tab & DllStructGetData($tCHEVRON, "Left") & @LF & _
"-->Top:" & @tab & DllStructGetData($tCHEVRON, "Top") & @LF & _
"-->Right:" & @tab & DllStructGetData($tCHEVRON, "Right") & @LF & _
"-->lParamNM:" & @tab & DllStructGetData($tCHEVRON, "lParamNM"))
; Возвращаемое значение не используется
Case $RBN_CHILDSIZE
; Высылается ReBar'ом, когда дочернее окно ленты было изменено в размерах
$tCHILDSIZE = DllStructCreate($tagNMREBARCHILDSIZE, $ilParam)
_DebugPrint("$RBN_CHILDSIZE" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tCHILDSIZE, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tCHILDSIZE, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tCHILDSIZE, "Code") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tCHILDSIZE, "uBand") & @LF & _
"-->wID:" & @tab & DllStructGetData($tCHILDSIZE, "wID") & @LF & _
"-->CLeft:" & @tab & DllStructGetData($tCHILDSIZE, "CLeft") & @LF & _
"-->CTop:" & @tab & DllStructGetData($tCHILDSIZE, "CTop") & @LF & _
"-->CRight:" & @tab & DllStructGetData($tCHILDSIZE, "CRight") & @LF & _
"-->CBottom:" & @tab & DllStructGetData($tCHILDSIZE, "CBottom") & @LF & _
"-->BLeft:" & @tab & DllStructGetData($tCHILDSIZE, "BandLeft") & @LF & _
"-->BTop:" & @tab & DllStructGetData($tCHILDSIZE, "BTop") & @LF & _
"-->BRight:" & @tab & DllStructGetData($tCHILDSIZE, "BRight") & @LF & _
"-->BBottom:" & @tab & DllStructGetData($tCHILDSIZE, "BBottom"))
; Возвращаемое значение не используется
Case $RBN_DELETEDBAND
; Высылается ReBar'ом после удаления ленты
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_DELETEDBAND" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @tab & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @tab & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @tab & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tNMREBAR, "lParam"))
; Возвращаемое значение не используется
Case $RBN_DELETINGBAND
; Высылается ReBar'ом при удалении ленты
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_DELETINGBAND" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @tab & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @tab & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @tab & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tNMREBAR, "lParam"))
; Возвращаемое значение не используется
Case $RBN_ENDDRAG
; Высылается ReBar'ом при завершении перетаскивания ленты пользователем
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_ENDDRAG" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @tab & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @tab & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @tab & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @tab & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @tab & DllStructGetData($tNMREBAR, "lParam"))
; Возвращаемое значение не используется
Case $RBN_GETOBJECT
; Высылается ReBar'ом, созданным со стилем $RBS_REGISTERDROP, когда объект перетаскивается над лентами ReBar
$tOBJECTNOTIFY = DllStructCreate($tagNMOBJECTNOTIFY, $ilParam)
_DebugPrint("$RBN_GETOBJECT" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tOBJECTNOTIFY, "hWndFrom") & @LF & _
"-->IDFrom:" & @tab & DllStructGetData($tOBJECTNOTIFY, "IDFrom") & @LF & _
"-->Code:" & @tab & DllStructGetData($tOBJECTNOTIFY, "Code") & @LF & _
"-->Item:" & @tab & DllStructGetData($tOBJECTNOTIFY, "Item") & @LF & _
"-->piid:" & @tab & DllStructGetData($tOBJECTNOTIFY, "piid") & @LF & _
"-->pObject:" & @tab & DllStructGetData($tOBJECTNOTIFY, "pObject") & @LF & _
"-->Result:" & @tab & DllStructGetData($tOBJECTNOTIFY, "Result"))
; Возвращаемое значение не используется
Case $RBN_HEIGHTCHANGE
; Высылается ReBar'ом, при изменении высоты
; Rebar с использованием стиля $CCS_VERT высылает это уведомление, когда его ширина изменилась
_DebugPrint("$RBN_HEIGHTCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; Возвращаемое значение не используется
Case $RBN_LAYOUTCHANGED
; Высылается ReBar'ом, когда пользователь изменяет расположение лент
_DebugPrint("$RBN_LAYOUTCHANGED" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; Возвращаемое значение не используется
Case $RBN_MINMAX
; Высылается ReBar'ом, перед достижением максимального или минимального размера ленты
_DebugPrint("$RBN_MINMAX" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
;~ Return 1 ; ненулевое значение, чтобы предотвратить операцию
Return 0 ; 0 позволяет продолжить
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
ConsoleWrite( _
"!===========================================================" & @LF & _
"+======================================================" & @LF & _
"-->Строка(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
"+======================================================" & @LF)
EndFunc ;==>_DebugPrint