当鼠标移动到输入框上,就在LABEL上显示倒计时5秒,但是无法在while循环里,把获取的系统时间固化下来,使用静态变量标识符Static,会报错:Cannot make existing variables static.:
我现在使用变通的处理办法,是使用控件子类化,在while外面捕获鼠标悬停的消息,然后得到初始时间,但这样有时间会有时间差,有时候会显示倒计时只有4秒,所以想在while里面固化这个初始时间。
#NoTrayIcon
#RequireAdmin
#PRE_UseX64 = n
#include <date.au3>
Opt("GuiOnEventMode", 1)
GUICreate("")
Global $hInput = GUICtrlCreateInput("", 40, 40, 120, 30)
GUICtrlSetBkColor(-1, 0xff66ff)
GUICtrlSetFont(-1, 16, 400)
Global $hLabel = GUICtrlCreateLabel("", 220, 40, 120, 30)
GUICtrlSetBkColor(-1, 0xff66ff)
GUICtrlSetFont(-1, 16, 400)
GUISetState()
GUISetOnEvent(-3, "_Exit")
Local $sTime = 0
While 1
Sleep(5)
$GuiInfo = GUIGetCursorInfo()
If @error = 0 Then
If $GuiInfo[4] = $hInput Then
Local Static $eTime = _TimeToTicks(@HOUR, @MIN, @SEC) + 5 *1000 ;怎么样能在while循环里面,把获取的时间固定下来呢?
If $eTime - _TimeToTicks(@HOUR, @MIN, @SEC) >= 0 Then
GUICtrlSetData($hLabel, ($eTime - _TimeToTicks(@HOUR, @MIN, @SEC)) / 1000)
Else
GUICtrlSetData($hLabel, "")
EndIf
EndIf
EndIf
WEnd
Func _Exit()
Exit
EndFunc
|