返回介绍

Function GUIGetMsg

发布于 2020-03-05 18:21:30 字数 3562 浏览 1124 评论 0 收藏 0

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


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文