找回密码
 加入
搜索
查看: 9919|回复: 27

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

 火.. [复制链接]
发表于 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
 楼主| 发表于 2010-7-12 19:35:15 | 显示全部楼层
版主大大,帮帮忙呀
发表于 2010-7-12 20:16:22 | 显示全部楼层
没看明白,44行是干什么的
发表于 2010-7-12 20:16:25 | 显示全部楼层
没看明白,44行是干什么的
 楼主| 发表于 2010-7-12 20:18:32 | 显示全部楼层
AdlibRegister("_timer")这是参考人家的代码,应该时间等于0的时间就反注册Adlibregister,求求大家帮帮忙,复制代码看看吧。
 楼主| 发表于 2010-7-12 20:57:28 | 显示全部楼层
 楼主| 发表于 2010-7-12 22:14:37 | 显示全部楼层
别沉呀,真的很需要呀
发表于 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
 楼主| 发表于 2010-7-13 17:21:30 | 显示全部楼层 |阅读模式
本帖最后由 arwang 于 2010-7-13 17:38 编辑

留着吧
发表于 2010-7-13 17:28:32 | 显示全部楼层
用定时器应该是可以解决的
 楼主| 发表于 2010-7-13 17:39:52 | 显示全部楼层
蛋蛋已经提醒你了,还不明白?
简单的帮你改造一下。
3mile 发表于 2010-7-12 22:21


提醒了吗?你的简单改造没起作用呀。
 楼主| 发表于 2010-7-13 17:41:08 | 显示全部楼层
用定时器应该是可以解决的
afan 发表于 2010-7-13 17:28


定时器应该怎么搞,刚学,有人说多线程可以。
发表于 2010-7-13 18:22:25 | 显示全部楼层
本帖最后由 netegg 于 2010-7-13 18:23 编辑

到底是什么问题,一会儿要继续一会儿又要停止的
lz稍微说的明白点好吗,实在有些看不明白
发表于 2010-7-13 18:23:41 | 显示全部楼层
呵呵,同楼上。也晕了
 楼主| 发表于 2010-7-13 18:28:28 | 显示全部楼层
呵呵,同楼上。也晕了
3mile 发表于 2010-7-13 18:23


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


开始计时后点右键,计时就会停止,我是不想它停,继续计时。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 19:25 , Processed in 0.111639 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表