[已解决]程序中含有循环代码,GUI点击关闭按钮无效!
本帖最后由 xkowen 于 2010-5-19 11:23 编辑点击按钮后会进入一个循环,但是主窗口无法关闭,请高人指定如何做到点击按钮后进入一事件循环,而且可以点击关闭按钮关闭程序。谢谢!
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 244, 104, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Button1 = GUICtrlCreateButton("开始", 80, 64, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("时间:", 24, 32, 40, 17)
$Input1 = GUICtrlCreateInput("10", 64, 24, 121, 21)
GUISetState(@SW_SHOW)
GUICtrlSetOnEvent($Button1,"Button")
#EndRegion ### END Koda GUI section ###
While 1
Sleep(1000)
WEnd
Func CLOSEClicked()
Exit
EndFunc
Func Button()
$t=GUICtrlRead($Input1)
While 1
Sleep(1000*$t)
MsgBox(0,"","OK")
WEnd
EndFunc global $msg= guigetmsg()
...
adlibregister('exitthis')
#EndRegion ### END Koda GUI section ###
...
func exitthis()
if $msg= -3 then exit
endfunc
试试看,不知道行不行 Sleep(1000*$t),楼主理解这句话了吗?实在不理解,删了它再试试吧 我也遇到同样过的问题,函数不运行结束其它按键就不能用。期待解答:face (20): Sleep(1000*$t),楼主理解这句话了吗?实在不理解,删了它再试试吧
shqf 发表于 2010-5-17 22:05 http://www.autoitx.com/images/common/back.gif
使用sleep(1000*$t)是因为这个地方我要放一部分代码,sleep仅代表执行这段代码所需的时间,为了方便高手们指点,所以省略了。请指点,谢谢!
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 244, 104, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Button1 = GUICtrlCreateButton("开始", 80, 64, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("时间:", 24, 32, 40, 17)
$Input1 = GUICtrlCreateInput("10", 64, 24, 121, 21)
GUISetState(@SW_SHOW)
GUICtrlSetOnEvent($Button1,"Button")
#EndRegion ### END Koda GUI section ###
$pause = True
While 1
$t=GUICtrlRead($Input1)
If $pause = False Then
While 1
Sleep(1000*$t)
MsgBox(0,"","OK")
$pause=True
WEnd
EndIf
WEnd
Func CLOSEClicked()
Exit
EndFunc
Func Button()
$pause=False
EndFunc这是楼主想要的代码吗? 利用“用户预定义的函数”的优先权,来关闭进入循环的代码:face (22):,这可能不是你想要的。但如果在这段代码中是可行的。 回复 6# chnlikang
这个解决方法不错,又学到了一招。谢谢!想问问还有没有其他实现的方法? 我也遇到同样过的问题,函数不运行结束其它按键就不能用。期待解答
chnlikang 发表于 2010-5-18 00:54 http://www.autoitx.com/images/common/back.gif
六楼已有解决方法,可以参考一下! 6楼的代码会陷入二级while循环中不跳出来。 看这个。#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Local $Flg=False
Local $t=0
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 244, 104, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Button1 = GUICtrlCreateButton("开始", 80, 64, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("时间:", 24, 32, 40, 17)
$Input1 = GUICtrlCreateInput("10", 64, 24, 121, 21)
GUISetState(@SW_SHOW)
GUICtrlSetOnEvent($Button1,"Button")
#EndRegion ### END Koda GUI section ###
While 1
If $Flg=True Then
Sleep(1000*$t)
MsgBox(0,"","OK")
Else
Sleep(200)
EndIf
WEnd
Func CLOSEClicked()
Exit
EndFunc
Func Button()
$t=GUICtrlRead($Input1)
$Flg=True
EndFunc 不错高手如云,我的学习之路还很漫长。 回复 10# lanfengc
谢谢,值得学习。
页:
[1]