_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