倒计时设计问题,开始计时后点右键计时就会停止,有办法解决吗?
本帖最后由 arwang 于 2010-7-13 18:32 编辑倒计时设计,开始计时后点右键,计时就会停止,点右键后我不想它停止,继续计时。有办法解决吗?
昨天发了这个问题,结果标题有问题给锁啦,3mile 可能没明白我的意思,我要的效果是当计时开始后,点右键弹出菜单计时不要停止,难道没有办法吗?
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Local $sec=0,$min=1
$mainwindow = GUICreate("倒计时 ", 140, 52, 500, 500, BitOR($WS_POPUP, $WS_CLIPSIBLINGS))
$Label = GUICtrlCreateLabel("标签", 0, 0, 140, 52, $SS_BLACKFRAME, $GUI_WS_EX_PARENTDRAG)
$FontMin = GUICtrlCreateLabel(StringFormat('%02s', $Min), 14, 4, 48, 39)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$FontD = GUICtrlCreateLabel(":", 60,1, 20, 40)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$FontSec = GUICtrlCreateLabel(StringFormat('%02s', $Sec), 82, 4, 48, 39)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$contextmenu = GUICtrlCreateContextMenu(3)
$Start = GUICtrlCreateMenuItem("开始", $contextmenu)
GUICtrlCreateMenuItem("", $contextmenu)
$infoitem = GUICtrlCreateMenuItem("退出", $contextmenu)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
AdlibRegister("_timer", 1000)
Case $infoitem
Exit
EndSwitch
WEnd
Func _timer()
If $Sec = 0 And $Min = 0 Then
AdlibUnRegister("_timer");这个有什么用?
Else
If $Sec <= 0 Then
$Sec = 60 + $Sec
$Min -= 1
EndIf
$Sec -= 1
GUICtrlSetData($FontMin, StringFormat('%02s', $Min))
GUICtrlSetData($FontSec, StringFormat('%02s', $Sec))
EndIf
EndFunc 版主大大,帮帮忙呀 没看明白,44行是干什么的 没看明白,44行是干什么的 AdlibRegister("_timer")这是参考人家的代码,应该时间等于0的时间就反注册Adlibregister,求求大家帮帮忙,复制代码看看吧。 {:face (88):} 别沉呀,真的很需要呀 蛋蛋已经提醒你了,还不明白?
简单的帮你改造一下。#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
;Global $Sec = 0
;Global $Min = 1
Local $sec=0,$min=1
$mainwindow = GUICreate("倒计时 ", 162, 82, 400, 300, BitOR($WS_POPUP, $WS_CLIPSIBLINGS))
$Label = GUICtrlCreateLabel("标签", 0, 0, 162, 82, $SS_BLACKFRAME, $GUI_WS_EX_PARENTDRAG) ;通过右键菜单退出-拖拽
;FileInstall("tu.jpg", @TempDir & "\") ;编译图片
;$Pic1 = GUICtrlCreatePic(@TempDir & "\tu.jpg", 0, 0, 162, 82)
$FontMin = GUICtrlCreateLabel(StringFormat('%02s', $Min), 22, 2, 48, 39)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xc24343)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$FontD = GUICtrlCreateLabel(":", 68, 2, 48, 39)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xc24343)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$FontSec = GUICtrlCreateLabel(StringFormat('%02s', $Sec) & ":", 90, 2, 48, 39)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xc24343)
GUICtrlSetFont(-1, 34, 400, 0, "@黑体")
$contextmenu = GUICtrlCreateContextMenu(3)
$Start = GUICtrlCreateMenuItem("开始", $contextmenu)
$Abort = GUICtrlCreateMenuItem("关于", $contextmenu)
GUICtrlCreateMenuItem("", $contextmenu)
$infoitem = GUICtrlCreateMenuItem("退出", $contextmenu)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3, $infoitem ; 退出
infoitem()
Case $Start
$sec=0
$Min=1
AdlibRegister("_timer", 1000)
EndSwitch
WEnd
Func _timer()
If $Sec = 0 And $Min = 0 Then
AdlibUnRegister("_timer");这个我也不知道有什么用
Else
If $Sec <= 0 Then
$Sec = 60 + $Sec
$Min -= 1
EndIf
$Sec -= 1
GUICtrlSetData($FontMin, StringFormat('%02s', $Min))
GUICtrlSetData($FontSec, StringFormat('%02s', $Sec) & ":")
EndIf
EndFunc ;==>_timer
Func infoitem()
FileDelete(@TempDir & "\tu.jpg") ;删除图片
Exit
EndFunc ;==>infoitem
倒计时设计问题,开始计时后点右键计时就会停止,有办法解决吗?
本帖最后由 arwang 于 2010-7-13 17:38 编辑留着吧{:face (394):} 用定时器应该是可以解决的 蛋蛋已经提醒你了,还不明白?
简单的帮你改造一下。
3mile 发表于 2010-7-12 22:21 http://www.autoitx.com/images/common/back.gif
提醒了吗?你的简单改造没起作用呀。 用定时器应该是可以解决的
afan 发表于 2010-7-13 17:28 http://www.autoitx.com/images/common/back.gif
定时器应该怎么搞,刚学,有人说多线程可以。 本帖最后由 netegg 于 2010-7-13 18:23 编辑
到底是什么问题,一会儿要继续一会儿又要停止的
lz稍微说的明白点好吗,实在有些看不明白 呵呵,同楼上。也晕了 呵呵,同楼上。也晕了
3mile 发表于 2010-7-13 18:23 http://www.autoitx.com/images/common/back.gif
倒计时设计,开始计时后点右键,计时就会停止,有办法解决吗?
昨天发了这个问题,结果标题有问题给锁啦,3mile 可能没明白我的意思,我要的效果是当计时开始后,点右键弹出菜单计时继续,难道没有办法吗?
开始计时后点右键,计时就会停止,我是不想它停,继续计时。
页:
[1]
2