arwang 发表于 2010-7-12 19:24:45

倒计时设计问题,开始计时后点右键计时就会停止,有办法解决吗?

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

arwang 发表于 2010-7-12 19:35:15

版主大大,帮帮忙呀

netegg 发表于 2010-7-12 20:16:22

没看明白,44行是干什么的

netegg 发表于 2010-7-12 20:16:25

没看明白,44行是干什么的

arwang 发表于 2010-7-12 20:18:32

AdlibRegister("_timer")这是参考人家的代码,应该时间等于0的时间就反注册Adlibregister,求求大家帮帮忙,复制代码看看吧。

arwang 发表于 2010-7-12 20:57:28

{:face (88):}

arwang 发表于 2010-7-12 22:14:37

别沉呀,真的很需要呀

3mile 发表于 2010-7-12 22:21:39

蛋蛋已经提醒你了,还不明白?
简单的帮你改造一下。#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:21:30

倒计时设计问题,开始计时后点右键计时就会停止,有办法解决吗?

本帖最后由 arwang 于 2010-7-13 17:38 编辑

留着吧{:face (394):}

afan 发表于 2010-7-13 17:28:32

用定时器应该是可以解决的

arwang 发表于 2010-7-13 17:39:52

蛋蛋已经提醒你了,还不明白?
简单的帮你改造一下。
3mile 发表于 2010-7-12 22:21 http://www.autoitx.com/images/common/back.gif

提醒了吗?你的简单改造没起作用呀。

arwang 发表于 2010-7-13 17:41:08

用定时器应该是可以解决的
afan 发表于 2010-7-13 17:28 http://www.autoitx.com/images/common/back.gif

定时器应该怎么搞,刚学,有人说多线程可以。

netegg 发表于 2010-7-13 18:22:25

本帖最后由 netegg 于 2010-7-13 18:23 编辑

到底是什么问题,一会儿要继续一会儿又要停止的
lz稍微说的明白点好吗,实在有些看不明白

3mile 发表于 2010-7-13 18:23:41

呵呵,同楼上。也晕了

arwang 发表于 2010-7-13 18:28:28

呵呵,同楼上。也晕了
3mile 发表于 2010-7-13 18:23 http://www.autoitx.com/images/common/back.gif


倒计时设计,开始计时后点右键,计时就会停止,有办法解决吗?
昨天发了这个问题,结果标题有问题给锁啦,3mile 可能没明白我的意思,我要的效果是当计时开始后,点右键弹出菜单计时继续,难道没有办法吗?

开始计时后点右键,计时就会停止,我是不想它停,继续计时。
页: [1] 2
查看完整版本: 倒计时设计问题,开始计时后点右键计时就会停止,有办法解决吗?