函数说明

GUIGetMsg

捕获窗口消息。

GUIGetMsg ( [高级模式] )

 

参数

高级模式 [可选参数] 以数组的形式返回扩展信息。
0 = (默认)只返回捕获的事件。
1 = 返回一个含有事件及扩展信息的数组。

 

返回值

返回一个事件(ID)或一个数组,取决于“高级模式”参数的设置。
返回的“事件”是指发送消息的控件ID,或者是某个特殊事件(例如窗口正被关闭、最小化等等)。若没有消息则返回的事件值是 0。


事件 ID
0 无事件
控件 ID 发送消息的控件 ID
$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 鼠标的次要按钮被松开


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


若 GUIOnEventMode 选项被设为1,则 GUIGetMsg 的返回值将总是 0,同时 @error 被设为1。

 

注意

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

 

相关

GUICreate, GUICtrlCreate..., GUICtrlRead, GUIOnEventMode(选项)

 

示例

;----------------------------------------------------------------------
; 示例 - 按下按钮即可查看被选中地单选框按钮
; 本脚本也同时演示了窗口状态的检测(被关闭/最小化/超时,等等)

#include <GUIConstants.au3>

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

; 创建控件
$button_1 = GUICtrlCreateButton ("B&utton 1", 30, 20, 120, 40)
$group_1 = GUICtrlCreateGroup ("Group 1", 30, 90, 165, 160)
GUIStartGroup()
$radio_1 = GUICtrlCreateRadio ("Radio &0", 50, 120, 70, 20)
$radio_2 = GUICtrlCreateRadio ("Radio &1", 50, 150, 60, 20)
$radio_3 = GUICtrlCreateRadio ("Radio &2", 50, 180, 60, 20)

; 初始化变量,用于跟踪 GUI 事件
$radioval1 = 0    ; 我们假定 0 = 第一个单选按钮被选中,2 = 最后一个单选按钮被选中
$radioval2 = 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, "默认按钮被点击", "Radio " & $radioval1 )
         
      Case $msg >= $radio_1 AND $msg <= $radio_3
         $radioval1 = $msg - $radio_1

   EndSelect
WEnd