主窗口按钮触发func子程序循环的时候,是否可以在主窗口添加一个按钮用于退出子程
请教一个问题,窗口情况下 按钮1 调用 子程序1 运行了一段循环操作,这种情况下如何使用 按钮2 去结束 子程序1 的循环#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
$hGUI = GUICreate("测试", 120, 147, -1, -1)
Local $hButton = GUICtrlCreateButton("运行", 17, 26, 70, 28)
Local $hButton2 = GUICtrlCreateButton("停止", 17, 62, 70, 28)
Local $hLabel = GUICtrlCreateLabel("Label", 17, 103, 70, 15)
GUISetState()
While 1
$hMsg = GUIGetMsg()
Switch $hMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hButton
Label_Ran()
Case $hButton2
Stop()
EndSwitch
WEnd
Func Stop()
EndFunc
Func Label_Ran()
While 1
GUICtrlSetData($hLabel,Random(1,100))
Sleep(10)
If $Stop = 1 Then Return 1
WEnd
EndFunc
zhang_jf 发表于 2022-8-31 16:56
如果子程序里面有阻断,或者是嵌套的循环,除了每个循环里面添加一次 Return 我可以通过其他的方法来退出 ...
一般都需要在耗时的循环体中判断退出。不过此类需求建议最好使用事件模式。 If GUIGetMsg() = $hButton2 Then Return Stop()
;~ If $Stop = 1 Then Return 1
这段是无用文本,发帖的时候没有删除。:face (36):
If $Stop = 1 Then Return 1
afan 发表于 2022-8-31 12:56
谢谢帮助,目前可以通过这种方式解决。 afan 发表于 2022-8-31 12:56
如果子程序里面有阻断,或者是嵌套的循环,除了每个循环里面添加一次 Return 我可以通过其他的方法来退出这个子进程嘛{:1_578:}
Func Label_Ran()
While 1
GUICtrlSetData($hLabel,Random(1,100))
Sleep(10)
MsgBox(1,1,1)
If GUIGetMsg() = $hButton2 Then Return 1
WEnd
EndFunc
页:
[1]