基 础 函 数 参 考


GUIGetMsg

获取窗口事件消息.

GUIGetMsg ( [高级模式] )

参 数

高级模式 [可选参数] 返回扩展信息数组.
0 = (默认)返回单一事件.
1 = 返回含有事件及扩展信息的数组.

返 回 值

返回事件或数组, 取决于"高级模式"的参数设置.
返回"事件"为发送消息的控件 ID, 或某个特殊事件(例如窗口关闭,最小化). 若没有消息, 则返回事件值为 0.


事件 ID 控件发送的消息
0 无事件
$GUI_EVENT_CLOSE 对话框(窗口)被关闭 (相关按钮或系统菜单项被点击).
$GUI_EVENT_MINIMIZE 对话框(窗口)最小化(窗口标题栏最小化按钮被点击).
$GUI_EVENT_RESTORE 对话框(窗口)还原(任务栏图标被点击).
$GUI_EVENT_MAXIMIZE 对话框(窗口)被最大化(窗口标题栏最大化按钮被点击).
$GUI_EVENT_MOUSEMOVE 鼠标移动.
$GUI_EVENT_PRIMARYDOWN 鼠标左键按下.
$GUI_EVENT_PRIMARYUP 鼠标左键释放.
$GUI_EVENT_SECONDARYDOWN 鼠标右键按下.
$GUI_EVENT_SECONDARYUP 鼠标右键释放.
$GUI_EVENT_RESIZED 对话框(窗口)调整大小.
$GUI_EVENT_DROPPED 结束 @GUI_DRAGID 拖放操作, @GUI_DRAGFILE 与 @GUI_DROPID 返回对应的控件 ID 或文件.


当使用"高级模式"时, 函数返回下列扩展信息的数组:
$array[0] = 0 或 事件 ID 或 控件 ID
$array[1] = 产生事件的窗口句柄
$array[2] = 产生事件的控件句柄(若适用)
$array[3] = 鼠标光标当前 X 坐标(相对于 GUI 窗口)
$array[4] = 鼠标光标当前 Y 坐标(相对于 GUI 窗口)


如果 GUIOnEventMode 选项设为 1, 则 GUIGetMsg 的返回值将总是 0, 同时 @error 被设为 1.
如果 GUIEventOptions 选项设为 1, 则最小化, 还原和最大化按钮不会对窗口有有任何动作, 只是一个简单的通知.

备 注

函数执行时将自动按需闲置 CPU. 因此可以放心地在紧凑的循环中使用本函数, 不必担心 CPU 的负荷问题.

有关鼠标悬停的位置和控件信息, 使用 GUIGetCursorInfo 函数检索.
当鼠标停留在某个控件而不激发事件, 同样可以调用 GUIGetCursorInfo 函数检索控件 ID.

相 关 函 数

GUICreate, GUICtrlCreate..., GUICtrlRead, GUIOnEventMode (Option), GUIEventOptions (Option), GUIGetCursorInfo, GUICtrlSendMsg, GUICtrlSetOnEvent

函 数 示 例


#include <GUIConstantsEx.au3>

Example()

;-------------------------------------------------------------------------------------
; 示例  - 按下按钮, 将看到选择单选框的结果
; 该脚本也检测窗口状态的变化 (关闭/最小化/超时, 等等).
Func Example()
    Local $button_1, $radio_1, $radio_3
    Local $radioval1, $msg

    Opt("GUICoordMode", 1)
    GUICreate("单选框演示", 400, 280)

    ; 创建 the controls
    $button_1 = GUICtrlCreateButton("按钮 1 &u", 30, 20, 120, 40)
    GUICtrlCreateGroup("组框 1", 30, 90, 165, 160)
    GUIStartGroup()
    $radio_1 = GUICtrlCreateRadio("单选框 &0", 50, 120, 80, 20)
    GUICtrlCreateRadio("单选框 &1", 50, 150, 80, 20)
    $radio_3 = GUICtrlCreateRadio("单选框 &2", 50, 180, 80, 20)

    ; 使用 GUI 事件追踪
    $radioval1 = 0 ; 设置 0 = 第一个单选按钮, 2 = 最后一个按钮

    ; 显示 GUI
    GUISetState()

    ; 在此消息循环中,使用单选框变量的变化保持跟踪,
    ; 另一种方式使用 GUICtrlRead() 读取每个控件的状态
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                MsgBox(0, "", "对话框被关闭")
                Exit
            Case $msg = $GUI_EVENT_MINIMIZE
                MsgBox(0, "", "对话框最小化", 2)
            Case $msg = $GUI_EVENT_MAXIMIZE
                MsgBox(0, "", "对话框还原", 2)

            Case $msg = $button_1
                MsgBox(0, "单选按钮单击", "单选框 " & $radioval1)

            Case $msg >= $radio_1 And $msg <= $radio_3
                $radioval1 = $msg - $radio_1

        EndSelect
    WEnd
EndFunc   ;==>Example

provider with jb51.net (unicode)