找回密码
 加入
搜索
楼主: My2009

[AU3基础] 动态显示时间,有时字体有抖动的感觉

 火.. [复制链接]
发表于 2013-2-26 21:57:21 | 显示全部楼层
回复 15# zym3138


    你加上不就行了嘛,这个都还要‘这样更好了’…………

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>
#include <WinAPI.au3>
$hgui = GUICreate("Timer show", 285, 80, -1, -1, BitOR($WS_SYSMENU, $WS_POPUP), BitOR($WS_EX_LAYERED,$WS_EX_TOPMOST), WinGetHandle(AutoItWinGetTitle()))
GUISetFont(50, 800)
$nHourLabel = GUICtrlCreateLabel('', 0, 0, 100, 80)
GUIctrlSetBkColor(-1,0xFFFFFF)
$nMinLabel = GUICtrlCreateLabel('', 100, 0, 100, 80)
GUIctrlSetBkColor(-1,0xFFFFFF)
$nSecALabel = GUICtrlCreateLabel('', 200, 0, 40, 80)
GUIctrlSetBkColor(-1,0xFFFFFF)
$nSecBLabel = GUICtrlCreateLabel('', 235, 0, 50, 80)
GUIctrlSetBkColor(-1,0xFFFFFF)
GUISetState(@SW_SHOW, $hgui)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xFFFFFF, 255)
AdlibRegister("_Timer", 1000)

While True
        Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_MOVE + $HTCAPTION, 0)
    EndSwitch
WEnd

Func _Timer()
        Local Static $iSecA, $iSecB, $iMin, $iHour
        If StringTrimRight(@SEC, 1) <> $iSecA Then
                GUICtrlSetData($nSecALabel, StringTrimRight(@SEC, 1))
                $iSecA = StringTrimRight(@SEC, 1)
        EndIf
        If StringTrimLeft(@SEC, 1) <> $iSecB Then
                GUICtrlSetData($nSecBLabel, StringTrimLeft(@SEC, 1))
                $iSecB = StringTrimLeft(@SEC, 1)
        EndIf        
        If @MIN <> $iMin Then
                GUICtrlSetData($nMinLabel,  @MIN & ':')
                $iMin = @MIN
        EndIf
        If @HOUR <> $iHour Then
                GUICtrlSetData($nHourLabel,  @HOUR & ':')
                $iHour = @HOUR
        EndIf
EndFunc
 

 楼主| 发表于 2013-3-3 10:45:37 | 显示全部楼层
我的代码如下:
Local $Dtime,$Date
GUICreate("Timer show", 300, 100)
GUISetFont(50, 800)
_DT()
GUISetState()
Do
Until GUIGetMsg() == -3

Func _DT()
    GUISetFont(18, 800, 1)
        $Date = GUICtrlCreateLabel(@YEAR & "-" & @MON & "-" & @MDAY & " " &@HOUR & ":" & @MIN & ":" & @SEC , 10, 10, 250, 25)
    ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetColor(-1, 0x0B1746)
        AdlibRegister("date", 1000)
EndFunc

 Func date() 
    Dim $Dtime = GUICtrlSetData($Date, @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC)
EndFunc
使用后会出现闪动的现象,原理与上面的两位是一样的,只是采集的方式有所不同
发表于 2013-3-21 10:29:08 | 显示全部楼层
最后一位好  且实用 方便!
发表于 2013-3-21 12:46:24 | 显示全部楼层
太好了,14楼,7楼的方法
发表于 2013-3-21 12:46:56 | 显示全部楼层
太好了,14楼,7楼的方法
发表于 2013-3-22 00:08:13 | 显示全部楼层
用GDI比较好点
发表于 2013-3-22 07:51:35 | 显示全部楼层
还是想看看楼主的代码,好分析问题
发表于 2013-3-23 13:33:42 | 显示全部楼层
顶14楼代码
发表于 2020-2-24 15:24:09 | 显示全部楼层

拖动窗口时间会停,请问有没有解决方法?
发表于 2020-2-25 14:57:07 | 显示全部楼层
#include <Date.au3>

Local $Dtime,$Date
GUICreate("Timer show", 300, 100)
GUISetFont(50, 800)
_DT()
GUISetState()
Do
Until GUIGetMsg() == -3

Func _DT()
    GUISetFont(18, 800, 1)
        $Date = GUICtrlCreateLabel('' , 10, 10, 250, 25)
    ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetColor(-1, 0x0B1746)
        AdlibRegister("date", 50)
EndFunc

 Func date() 
        Local Static $g_sTime
        Local $sTime = $g_sTime
        $g_sTime = _Now()
        If $sTime <> $g_sTime Then GUICtrlSetData($Date, $g_sTime)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 08:54 , Processed in 0.126042 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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