事件模式无法退出子函数,请大神指正,内有代码
这段代码运行过后,点了开始就关不掉了,请教一下,哪里有问题?#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 444, 267, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton("开始", 112, 160, 81, 41, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("暂停", 248, 160, 81, 41, 0)
GUICtrlSetOnEvent(-1, "Button2Click")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Button1Click()
Sleep(900000)
EndFunc
Func Button2Click()
Exit
EndFunc
Func Form1Close()
Exit
EndFunc 问题就在Sleep(900000) 什么意思?子函数无法中断吗?有其他办法可以将子函数中断不? 本帖最后由 zhouhaijin 于 2014-12-21 02:16 编辑
你sleep这么久就是想写死循环的意思吧
消息模式可以自定义函数里再获取消息判断就行。
事件模式,可以用AdlibRegister的方法
也可以用他总结的方法
http://www.autoitx.com/forum.php?mod=viewthread&tid=4175&highlight=%CD%CB%B3%F6 你要是想自定义函数里就sleep(900000),我想退出应该要等900000毫秒才行。 你上边这种方法就可以在我执行等900000秒的时候直接中断它并退出吗?感谢感谢! 不能。。。。。。。。。 不能。。。。。。。。。 #include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
GUICreate("form1",200,100)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
Local $start=GUICtrlCreateButton("开始",10,30,180,20)
GUICtrlSetOnEvent($start,"_While1")
Local $stop=GUICtrlCreateButton("中止",10,50,180,20)
GUICtrlSetOnEvent($stop, "_exit")
GUISetState (@SW_SHOW)
While 1
Sleep(1000)
WEnd
Func _exit ()
MsgBox (0,"","退出")
Exit
EndFunc
Func _While1()
opt ("GUIOnEventMode",0)
while 1
Sleep(100)
$msg = GUIGetMsg()
Switch $msg
Case $stop
_exit ()
EndSwitch
WEnd
EndFunc 这段代码可以吗?应该也不行吧 #include <Date.au3>
#include <StaticConstants.au3>
Global $bState = True
GUICreate('计时+时间循环', 300, 200)
GUICtrlCreateLabel('系统时间:', 10, 10, 60, 50)
$Time = GUICtrlCreateLabel(_Now(), 70, 10)
$Label1 = GUICtrlCreateLabel('准备就绪', 10, 60, 280, 50, $SS_CENTER)
GUICtrlSetFont(-1, 15, 800, 0, '楷体_GB2312')
$Button1 = GUICtrlCreateButton('开始', 40, 130, 100, 30)
$Button2 = GUICtrlCreateButton('暂停', 160, 130, 100, 30)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$i = 1
AdlibRegister('cont', 1000)
Case $Button2
If $bState = True Then
AdlibUnRegister('cont')
GUICtrlSetData($Label1, '暂停至' & $i & '秒')
GUICtrlSetData($Button2, '继续')
$bState = False
Else
$bState = True
GUICtrlSetData($Button2, '暂停')
AdlibRegister('cont', 1000)
EndIf
EndSwitch
If _Now() <> GUICtrlRead($Time) Then GUICtrlSetData($Time, _Now())
WEnd
Func cont()
GUICtrlSetData($Label1, '已开始' & $i & '秒')
$i += 1
EndFunc ;==>cont
感谢版主支持! AdlibRegister这一个我用不了…… 回复 13# scared1
你的自定义函数带参数? 我就是复制的你的脚本,但是用不了,提示AdlibRegister未定义。
页:
[1]
2