qsy666888 发表于 2018-7-19 17:41:19

在鼠标有效应的模式下如何建立无限循环?(已解决)

本帖最后由 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:31:42

本帖最后由 kk_lee69 于 2018-7-19 22:40 编辑

看不出來你的影響是甚麼..........

會有影響是 循環模式 與 事件模式 的相互干擾

或者 SLEEP 造成的影響

kk_lee69 发表于 2018-7-19 22:38:36

#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

qsy666888 发表于 2018-7-20 08:27:40

kk_lee69 发表于 2018-7-19 22:38


感谢K大,谢谢!

tubaba 发表于 2018-7-20 08:40:13

msgbox是阻断型函数,一旦调用,这个进程就会暂停,因此,当msgbox弹出时,label的计时一定会停止.不管怎么做

qsy666888 发表于 2018-7-20 08:41:22

本帖最后由 qsy666888 于 2018-7-20 08:43 编辑

tubaba 发表于 2018-7-20 08:40
msgbox是阻断型函数,一旦调用,这个进程就会暂停,因此,当msgbox弹出时,label的计时一定会停止.不管怎么做
真是你说的如此

afan 发表于 2018-7-20 11:25:46

定时器了解下

qsy666888 发表于 2018-7-20 11:57:05

afan 发表于 2018-7-20 11:25
定时器了解下

谢谢,定时器能解决这个问题,谢谢前面几位大佬

tubaba 发表于 2018-7-20 12:22:22

确实,settimer可以做到..忘了这一点 @afan
页: [1]
查看完整版本: 在鼠标有效应的模式下如何建立无限循环?(已解决)