函数参考


_GUICtrlTab_Create

创建一个标签控件(TabControl)

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

参数

$hWnd 父窗口或者所有者窗口
$iX 控件水平坐标
$iY 控件垂直坐标
$iWidth [可选参数] 控件宽度
$iHeight [可选参数] 控件高度
$iStyle [可选参数] 控件样式:
$TCS_BOTTOM - 标签显示在控件底部
$TCS_BUTTONS - 标签显示为按钮,绘制区域周围没有边界
$TCS_FIXEDWIDTH - 所有标签的宽度相等
$TCS_FLATBUTTONS - 标签选中时显示为凹下,而其它未选标签处于同一平面.
必须与 $TCS_BUTTONS 样式共同使用才能达到此效果.
$TCS_FOCUSNEVER - 点击时控件不接收输入焦点
$TCS_FOCUSONBUTTONDOWN - 点击时控件接收输入焦点
$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 - 标签具有与其关联的工具提示控件
$TCS_VERTICAL - 标签显示在控件左侧,标签文本垂直显示
必须与 $TCS_MULTILINE 样式配合使用.
要使标签出现在控件右侧, 请使用 $TCS_RIGHT 样式.
[可选参数] 默认 : $TCS_HOTTRACK
强制 : $WS_CHILD, $WS_CLIPSIBLINGS, $WS_VISIBLE
$iExStyle [可选参数] 控件扩展样式:
$TCS_EX_FLATSEPARATORS - 控件标签项目之间将绘制分隔符
$TCS_EX_REGISTERDROP - 当一个对象被拖到标签项目,
控件生成 $TCN_GETOBJECT 通知消息,以请求放置目标对象.

返回值

成功: 返回控件句柄
失败: 0

注意/说明

 此功能为高级用户学习如何控制工程.

相关

_GUICtrlTab_Destroy

示例/演示


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

$Debug_TAB = False ; 检查传递给函数的类名, 设置为True并输出到一个控件的句柄,用于检查它是否工作

Global $hTab

_Main()

Func _Main()
    Local $hGUI

    ; 创建 GUI
    $hGUI = GUICreate("(UDF Created) Tab Control Create", 400, 300)
    $hTab = _GUICtrlTab_Create($hGUI, 2, 2, 396, 296)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 添加标签
    _GUICtrlTab_InsertItem($hTab, 0, "Tab 1")
    _GUICtrlTab_InsertItem($hTab, 1, "Tab 2")
    _GUICtrlTab_InsertItem($hTab, 2, "Tab 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)
                    ; 标签控件忽略此返回值
                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 ; 控件正释放鼠标捕获
                    _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 & _
            "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint