关于循环如何跳出的问题?
刚才发错地方了,现重发一次,见谅!代码如下:
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
$mainwindow = GUICreate("测试程序",125,50) ; 创建窗口并返回窗口句柄
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件
$playbutten = GUICtrlCreateButton("开始", 30,12,65)
GUICtrlSetOnEvent($playbutten, "PLAY")
GUISetState(@SW_SHOW)
While 1
Sleep(1000); 不做任何事
WEnd
Func PLAY()
While 1
不断循环的内容......
WEnd
EndFunc
Func CLOSEClicked()
Exit
EndFunc
当我点完开始按钮后,就怎么也关不掉了,该怎么办呢?
[ 本帖最后由 axis000 于 2009-3-12 13:15 编辑 ] Func PLAY()
While 1
不断循环的内容...... //建议这里SLEEP一下,这样很卡的.....至少SLEEP(100)啊..
WEnd
EndFunc 原帖由 axis000 于 2009-3-12 08:41 发表 http://www.autoitx.com/images/common/back.gif
刚才发错地方了,现重发一次,见谅!
代码如下:
#include
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
$mainwindow = GUICreate("测试程序",125,50) ; 创建窗口并返回窗口句柄
GUISetOnEvent($GUI_EVENT_C ...
个人也不是很理解,只能自我解释为:由于是单线程,所以在连续的循环中,au3腾不出手来做第二件事吧。
我的处理办法是在循环中加以额外的退出条件,添补后的代码如下:
#include <GUIConstants.au3>
#Include <Misc.au3>
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
Global $ta=0
$mainwindow = GUICreate("测试程序",125,50) ; 创建窗口并返回窗口句柄
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件
$playbutten = GUICtrlCreateButton("开始", 30,12,65)
GUICtrlSetOnEvent($playbutten, "PLAY")
GUISetState(@SW_SHOW)
While 1
Sleep(1000); 不做任何事
WEnd
Func PLAY()
While 1
If _IsPressed("1B") Then ;ESC退程序
Exit
EndIf
;不断循环的内容......
$ta+=1
ConsoleWrite($ta&" ")
Sleep(100)
WEnd
EndFunc
Func CLOSEClicked()
Exit
EndFunc 关注中,我也是这个问题啊……
我加了个AdlibEnable函数……
想找到更好的方法…… au3的线程处理可以说是差的很那....哎``.
很明显是一个死循环了..
没空管其他函数的死活了... 把PLAY放到主体中 这样可以响应一个函数
设置一个开关来控制PLAY 楼上的能说的更详细些吗? 三楼的方法也可以,但是如果我想加暂停按钮就麻烦了. 原帖由 axis000 于 2009-3-12 11:52 发表 http://www.autoitx.com/images/common/back.gif
三楼的方法也可以,但是如果我想加暂停按钮就麻烦了.
要暂停就在其中再加循环嵌套。修改后的代码如下:
#include <GUIConstants.au3>
#Include <Misc.au3>
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
Global $ta=0
$mainwindow = GUICreate("测试程序",125,50) ; 创建窗口并返回窗口句柄
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件
$playbutten = GUICtrlCreateButton("开始", 30,12,65)
GUICtrlSetOnEvent($playbutten, "PLAY")
GUISetState(@SW_SHOW)
While 1
Sleep(1000); 不做任何事
WEnd
Func PLAY()
While 1
If _IsPressed("1B") Then ;ESC退程序
Exit
EndIf
If _IsPressed("73") Then ;F4暂停
Do
Sleep(100)
Until _IsPressed("74") ;F5继续
EndIf
;不断循环的内容......
$ta+=1
ConsoleWrite($ta&" ")
Sleep(100)
WEnd
EndFunc
Func CLOSEClicked()
Exit
EndFunc 谢谢,辛苦了!!:face (38):
页:
[1]