(已解决)按钮消息不能实时获取
本帖最后由 330259789 于 2010-12-19 21:04 编辑用While 循环运行主程序,当按下按钮时弹出对话框,可是按了以后得循环十几次才跳出来,咋反应这么慢的啊?代码如下
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 442, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 40, 32, 75, 25)
$Button2 = GUICtrlCreateButton("Button2", 136, 32, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
MsgBox(0, 0, "button1被按下")
Case $Button2
MsgBox(0, 0, "button2被按下")
EndSwitch
g()
WEnd
Func g()
Sleep(1000)
MsgBox(0, 0,"主程序" )
EndFunc ;==>g
这样写肯定反应慢了。
你把主程序放在WHILE里面,不断的循环运行,那两个按钮是干啥用的?把主程序放在按钮事件里面不行吗?
下面代码改成了事件模式#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1) ;切换至 事件模式
$Form1 = GUICreate("Form1", 623, 442)
GUISetOnEvent($GUI_EVENT_CLOSE, "g")
$Button1 = GUICtrlCreateButton("Button1", 40, 32, 75, 25)
GUICtrlSetOnEvent(-1, "g")
$Button2 = GUICtrlCreateButton("Button2", 136, 32, 75, 25)
GUICtrlSetOnEvent(-1, "g")
GUISetState(@SW_SHOW)
While 1
Sleep(1000)
ToolTip(@HOUR &":"& @MIN &":"& @SEC, @DesktopWidth/2, @DesktopHeight/2, "主程序运行中")
WEnd
Func g()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
MsgBox(0, 0, "button1被按下")
Case $Button2
MsgBox(0, 0, "button2被按下")
EndSwitch
EndFunc ;==>g 消息循环中的g()
当中不能有SLEEP()
不管sleep(多少时间)
都会造成消息循环函数(有自动挂起并闲置时间的功能)反应迟钝
! 回复 3# _ddqs.
原来这样啊~!又学会一招,谢谢 回复 2# yhxhappy
恩,改成了事件模式果然OK了。。
谢谢~!
页:
[1]