Функция _GUICtrlRebar_Create

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


_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