在鼠标有效应的模式下如何建立无限循环?(已解决)
本帖最后由 qsy666888 于 2018-7-20 08:28 编辑在鼠标有效应的模式下如何建立无限循环?使其他们互不干扰
如下:1、label显示数字从1开始,每6秒加1
2、鼠标移动到按钮上有效应,弹出消息框。
现在两者均能体现,但有互相有干扰,遇到这种情况如何处理呢,求大神门赐教。
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Local $i = 1,$B = 1
Opt("GUIOnEventMode",1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("有鼠标效应的时候如何加循环段", 367, 147)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Label1 = GUICtrlCreateLabel("", 48, 16, 60, 28)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Button1", 48, 56, 115, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$Info = GUIGetCursorInfo($Form1)
If Not @error Then
If$info = $Button1 And $B = 1 Then
MsgBox(0,0,'鼠标在按钮上')
$B = 0
ElseIf $info <> $Button1 And $B = 0 Then
;MsgBox(0,0,'鼠标已离开按钮')
$B = 1
EndIf
EndIf
xh()
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func xh()
GUICtrlSetData($Label1,$i)
$i+= 1
Sleep(6000)
EndFunc
本帖最后由 kk_lee69 于 2018-7-19 22:40 编辑
看不出來你的影響是甚麼..........
會有影響是 循環模式 與 事件模式 的相互干擾
或者 SLEEP 造成的影響
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Local $i = 1,$B = 1
Opt("GUIOnEventMode",1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("有鼠?效?的?候如何加循?段", 367, 147)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Label1 = GUICtrlCreateLabel("", 48, 16, 60, 28)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Button1", 48, 56, 115, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibRegister("xh",6000)
While 1
$Info = GUIGetCursorInfo($Form1)
If Not @error Then
If$info = $Button1 And $B = 1 Then
MsgBox(0,0,'鼠?在按?上')
$B = 0
ElseIf $info <> $Button1 And $B = 0 Then
;MsgBox(0,0,'鼠?已离?按?')
$B = 1
EndIf
EndIf
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func xh()
GUICtrlSetData($Label1,$i)
$i+= 1
EndFunc kk_lee69 发表于 2018-7-19 22:38
感谢K大,谢谢! msgbox是阻断型函数,一旦调用,这个进程就会暂停,因此,当msgbox弹出时,label的计时一定会停止.不管怎么做 本帖最后由 qsy666888 于 2018-7-20 08:43 编辑
tubaba 发表于 2018-7-20 08:40
msgbox是阻断型函数,一旦调用,这个进程就会暂停,因此,当msgbox弹出时,label的计时一定会停止.不管怎么做
真是你说的如此 定时器了解下 afan 发表于 2018-7-20 11:25
定时器了解下
谢谢,定时器能解决这个问题,谢谢前面几位大佬 确实,settimer可以做到..忘了这一点 @afan
页:
[1]