Функция _GUICtrlTab_Create

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


_GUICtrlTab_Create

Создаёт Tab (вкладки)

#include <GuiTab.au3>
_GUICtrlTab_Create($hWnd, $iX, $iY [, $iWidth=150 [, $iHeight=150 [, $iStyle=0x00000040 [, $iExStyle=0x00000000]]]])

Параметры

$hWnd Дескриптор родительского окна или окна владельца
$iX X-координата левого края элемента
$iY Y-координата верхнего края элемента
$iWidth [необязательный] Ширина
$iHeight [необязательный] Высота
$iStyle [необязательный] Стили элемента:
    $TCS_BOTTOM - Вкладки отображаются снизу под элементом
    $TCS_BUTTONS - Вкладки в виде кнопок, и нет обводящей рамки вокруг области элемента.
    $TCS_FIXEDWIDTH - Все вкладки одинаковой ширины.
    $TCS_FLATBUTTONS - Выбранная вкладка отображается утопленной, в то время, как другие вкладки плоские (сливаются с фоном) с разделителем вкладок в виде вертикальной линии. Этот стиль влияет только на элемент Tab со стилем $TCS_BUTTONS.
    $TCS_FOCUSNEVER - Элемент Tab не получает фокус при клике
    $TCS_FOCUSONBUTTONDOWN - Элемент Tab получает фокус при клике
    $TCS_FORCEICONLEFT - Иконки выравниваются к левому краю каждой вкладки фиксированной ширины. Этот стиль используется только со стилем $TCS_FIXEDWIDTH.
    $TCS_FORCELABELLEFT - Название вкладки выравнивается к левому краю вкладки фиксированной ширины. То есть название отображается сразу же справа от иконки, а не по центру. Этот стиль используется только со стилем $TCS_FIXEDWIDTH, и подразумевает стиль $TCS_FORCEICONLEFT.
    $TCS_HOTTRACK - Название вкладок автоматически подсвечиваются при наведении мыши. Вы можете проверить, включено ли отслеживание путем вызова SystemParametersInfo.
    $TCS_MULTILINE - Многорядное отображение вкладок, видны все сразу.
    $TCS_MULTISELECT - Может быть выбрано несколько вкладок при удерживании нажатой клавиши CTRL. Этот стиль должен использоваться со стилем $TCS_BUTTONS.
    $TCS_OWNERDRAWFIXED - Родительское окно отвечает за отрисовку вкладок
    $TCS_RAGGEDRIGHT - Ряд вкладок не будет растянут, чтобы заполнить всю ширину элемента. Этот стиль по умолчанию.
    $TCS_RIGHT - Вкладки отображаются вертикально на правой стороне элемента при использовании стиля $TCS_VERTICAL. Этот параметр равен $TCS_BOTTOM. Этот стиль не поддерживается, если вы используете визуальные стили.
    $TCS_RIGHTJUSTIFY - Ширина каждой вкладки увеличивается, по необходимости, так что каждый ряд вкладок заполняет всю ширину элемента вкладок. Этот стиль игнорируется, если не указан стиль $TCS_MULTILINE.
    $TCS_SCROLLOPPOSITE - Неиспользуемые ряды вкладок переместить на противоположную сторону элемента при переходе по вкладкам.
    $TCS_SINGLELINE - Отображается только один ряд вкладок. Если необходимо пользователь может прокручивать ряд вкладок, чтоб увидеть не вмещающиеся вкладки. Этот стиль по умолчанию.
    $TCS_TABS - Обычные вкладки, и обводящая рамка вокруг области элемента. Этот стиль по умолчанию.
    $TCS_TOOLTIPS - Элемент Tab имеет всплывающую подсказку (ToolTip) вкладки.
    $TCS_VERTICAL - Вкладки слева от элемента Tab, и отображаются вертикально. Этот стиль используется только со стилем $TCS_MULTILINE. Используйте стиль $TCS_RIGHT, чтоб отобразить вкладки справа.
    По умолчанию: $TCS_HOTTRACK     Принудительно: $WS_CHILD, $WS_CLIPSIBLINGS, $WS_VISIBLE
$iExStyle [необязательный] Расширенные стили элемента:
    $TCS_EX_FLATSEPARATORS - Создаёт разделитель между вкладками. Используется со стилем $TCS_BUTTONS     $TCS_EX_REGISTERDROP - элемент высылает $TCN_GETOBJECT уведомление, требуемое бросаемому объекту при перетаскивании объекта поверх язычков вкладок.

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

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

Примечания

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

См. также

_GUICtrlTab_Destroy

Пример

#include <GUIConstantsEx.au3>
#include <GuiTab.au3>
#include <WindowsConstants.au3>

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

Global $hTab

_Main()

Func _Main()
    Local $hGUI

    ; Создаёт GUI
    $hGUI = GUICreate("(UDF) Создаёт Tab", 400, 300)
    $hTab = _GUICtrlTab_Create($hGUI, 2, 2, 396, 296)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; Вставляет вкладки
    _GUICtrlTab_InsertItem($hTab, 0, "Вкладка 1")
    _GUICtrlTab_InsertItem($hTab, 1, "Вкладка 2")
    _GUICtrlTab_InsertItem($hTab, 2, "Вкладка 3")
    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab
    $hWndTab = $hTab
    If Not IsHWnd($hTab) Then $hWndTab = GUICtrlGetHandle($hTab)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndTab
            Switch $iCode
                Case $NM_CLICK ; Пользователь кликает левую кнопку мыши на элементе
                    _DebugPrint("$NM_CLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Возвращаемое значение игнорируется элементом Tab
                Case $NM_DBLCLK ; Пользователь сделал двойной клик левой кнопкой мыши на элементе
                    _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
;~                  Return 1 ; не ноль, чтобы не допустить встроенную обработку
                    Return 0 ; ноль, чтобы допустить встроенную обработку
                Case $NM_RCLICK ; Пользователь кликает правую кнопку мыши на элементе
                    _DebugPrint("$NM_RCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
;~                  Return 1 ; не ноль, чтобы не допустить встроенную обработку
                    Return 0 ; ноль, чтобы допустить встроенную обработку
                Case $NM_RDBLCLK ; Пользователь сделал двойной клик правой кнопкой мыши на элементе
                    _DebugPrint("$NM_RDBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
;~                  Return 1 ; не ноль, чтобы не допустить встроенную обработку
                    Return 0 ; ноль, чтобы допустить встроенную обработку
                Case $NM_RELEASEDCAPTURE ; control is releasing mouse capture
                    _DebugPrint("$NM_RELEASEDCAPTURE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Нет возвращаемых значений
            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