函数参考


GUICtrlRead

读取指定控件的状态或相关数据.

GUICtrlRead ( 控件ID [, 高级] )

参数

控件ID 控件标识符(控件ID),可由 GUICtrlCreate... 函数的返回值获得.
高级 [可选参数] 返回控件的扩展信息.
0 = (默认) 返回控件的状态或者数据.
1 = 返回控件的扩展信息 (参考 注意 部分).

返回值

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

类型
复选框(Checkbox),单选框(Radio) 按钮的状态. 请参考 状态表
组合框(Combo),列表框(List) 选中的项目
输入框(Input),编辑框(Edit) 输入的文本
按钮(Button) 显示的文本
日期(Date) 选择的日期,格式按照当前系统区域设置显示
进度条(Progress) 当前百分比
滑动条(Slider) 当前值
标签(Tab) 选中的标签项的编号
菜单(Menu),菜单项(MenuItem) 菜单/项目的状态. 请参考状态表.
树型视图(TreeView) 选中的 TreeView 项目的控件标识符(控件ID)
树型视图项目(TreeViewItem) TreeView 项目的状态
列表视图(ListView) 选中的 ListView 项目的控件标识符(控件ID).0表示没有项目被选中
Dummy 值设置于 GUICtrlSendToDummy 或者 GUICtrlSetData函数.

注意/说明

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

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



类型 附加值
Checkbox, Radio 控件的文本.
Menu, MenuItem 控件的文本.
TreeView TreeViewItem 中当前选中的文本.
TreeViewItem TreeViewItem 的文本.
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-扩展样式与使用高级模式时) . 因此可以使用 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("My GUICtrlRead") ; 创建一个居中显示的 GUI 窗口

    $menu1 = GUICtrlCreateMenu("File")

    $n1 = GUICtrlCreateList("", 10, 10, -1, 100)
    GUICtrlSetData(-1, "item1|item2|item3", "item2")

    $n2 = GUICtrlCreateButton("读取", 10, 110, 50)
    GUICtrlSetState(-1, $GUI_FOCUS) ; 这个按钮是重点

    GUISetState() ; 显示一个空白的窗口
    ; 运行界面,直到窗口被关闭
    Do
        $msg = GUIGetMsg()
        If $msg = $n2 Then
            MsgBox(4096, "读取选中的项目", GUICtrlRead($n1)) ; 读取选中的项目
            $menustate = GUICtrlRead($menu1) ; 读取指定控件的状态或相关数据.
            $menutext = GUICtrlRead($menu1, 1) ; 读取指定控件的扩展信息.
            MsgBox(4096, "读取菜单的状态和文本", "状态:" & $menustate & @LF & "文本:" & $menutext)
        EndIf
    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example