基 础 函 数 参 考


GUICtrlRead

读取控件的状态或数据.

GUICtrlRead ( 控件ID [, 高级] )

参 数

控件ID GUICtrlCreate... 函数返回的控件标识符.
高级 [可选参数] 返回控件的扩展信息.
0 = (默认) 返回控件的状态或者数据.
1 = 返回控件的扩展信息 (见备注).

返 回 值

成功: 返回值因控件类型的不同而不同(请看下表).
失败: 返回 0.

控件类型 返回值
Checkbox(复选框), Radio(单选框) 选择状态, 请参考. 状态表
Combo(组合框), List(列表框) 选中项目的值
Input(输入框), Edit(编辑框) 输入的文本
Button(按钮) 显示的文本
Date(日期) 选择的日期, 格式由区域设置定义
Progress(进度条) 当前进度百分比
Slider(滑动条) 当前值
Tab(标签页控件) 选中的标签页编号; 或依据 "高级" 参数值返回标签项目的控件 ID.
Menu, MenuItemMenu(菜单), MenuItem(菜单项目) 菜单/项目的状态. 请参考 状态表
TreeView(树树图) TreeView 选中项目的控件标识符
TreeViewItem(树视图项目) 树视图项目的状态
ListView(列表视图) ListView 选中项目的控件标识符. 0 表示没有项目被选中
Dummy(虚拟控件) GUICtrlSendToDummyGUICtrlSetData设置的值

备 注

高级' 模式的返回值包含控件的附加值.(见下文).

注意: 不是所有的已知控件都有附加值可用!



控件类型 附加值
复选框(Checkbox),单选框(Radio) 控件的文本.
菜单(Menu),菜单项(MenuItem) 控件的文本.
树视图(TreeView) TreeView 当前选中项目的文本.
树视图项目(TreeViewItem) TreeView 项目的文本.
列表视图项目(ListViewItem) 如果在高级模式中用 $LVS_EX_CHECKBOXES 扩展样式时, 返回 ListViewItem 的选中状态. 见 状态表
标签页(Tab)控件 选中标签项目的控件 ID

由于复选框, 单选框控件能返回 $GUI_FOCUS 与 $GUI_CHECKED 状态,
因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试控件是否被选中.

由于 Listview 项目能返回 $GUI_CHECKED 与 $GUI_UNCHECKED 状态
(仅当 listview 控件具有 LVS_EX_CHECKBOXES-exstyle 扩展样式与使用 "高级" 参数时),
因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试项目是否被选中.

由于 Treeview 项目能返回 $GUI_FOCUS, $GUI_EXPAND 与 $GUI_CHECKED, $GUI_UNCHECKED
(仅当 treeview 控件具有 TVS_CHECKBOXES 样式时),
因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试项目是否被选中.

相 关 函 数

GUICtrlUpdate..., GUIGetMsg, GUICtrlSetData, GUIEventOptions (Option), GUICtrlCreate..., GUICtrlGetState, GUICtrlSendToDummy, GUICtrlSendMsg

函 数 示 例


#include <GUIConstantsEx.au3>

Example()

Func Example()
    Local $menu1, $n1, $n2, $msg, $menustate, $menutext

    GUICreate("读取控件的状态或数据") ; 创建居中显示的 GUI 窗口

    $menu1 = GUICtrlCreateMenu("文件")

    $n1 = GUICtrlCreateList("", 10, 10, -1, 100)
    GUICtrlSetData(-1, "项目 1|项目 2|项目 3", "项目 2")

    $n2 = GUICtrlCreateButton("读取", 10, 110, 50)
    GUICtrlSetState(-1, $GUI_FOCUS) ; 为按钮设置焦点

    GUISetState() ; 显示一个空白的窗口
    ; 运行 GUI, 直到 GUI 被关闭
    Do
        $msg = GUIGetMsg()
        If $msg = $n2 Then
            MsgBox(0, "Selected listbox entry", GUICtrlRead($n1)) ; 显示选定的列表框项目
            $menustate = GUICtrlRead($menu1) ; 返回菜单项目状态
            $menutext = GUICtrlRead($menu1, 1) ; 返回菜单项目文本
            MsgBox(0, "菜单项目状态和文本 ", "状态: " & $menustate & @LF & "文本: " & $menutext)
        EndIf
    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

provider with jb51.net (unicode)