VB6实现 Windows 桌面的简单透明时钟

可以拖动移动,透明窗口,记住位置和文字颜色。

单击 AM/PM 读出显示选项。

演示图:

实现代码:

Private Declare Function GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal crKey As Long, _
    ByVal bAlpha As Byte, _
    ByVal dwFlags As Long) As Long
    
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_COLORKEY = &H1&
Private Const LWA_ALPHA = &H2&

Dim IsDragging As Boolean
Dim MousePosX As Integer
Dim MousePosY As Integer

Dim ConfigData(2) As Long
Private Sub Form_Load()
    'Set the Form transparent by color.
    BackColor =RGB(127, 127, 0) 'Non standard color.
    SetWindowLong hWnd, _
                  GWL_EXSTYLE, _
                  GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
    SetLayeredWindowAttributes hWnd, BackColor, 0, LWA_COLORKEY
    ReadConfigFile (App.Path & "\Clock.cfg")
    Me.Left = ConfigData(0)
    Me.Top = ConfigData(1)
    Clock(0).ForeColor = ConfigData(2)
    Clock(1).ForeColor = ConfigData(2)
    Timer1_Timer
End Sub
Private Sub Form_Unload(Cancel As Integer)
  WriteConfigFile (App.Path & "\Clock.cfg")
  End
End Sub
Private Sub Clock_Click(Index As Integer)
  If Index = 1 Then
    ClockBG.Visible = True
    For i = 0 To 3
      Options(i).Visible = True
    Next
  End If
End Sub
Private Sub Clock_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 1 And Index = 0 Then
        IsDragging = True
        MousePosX = X
        MousePosY = Y
    End If
End Sub
Private Sub Clock_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If IsDragging Then
        Me.Left = Me.Left + (X - MousePosX)
        Me.Top = Me.Top + (Y - MousePosY)
        If Button <> 1 Then
            IsDragging = False
            ConfigData(0) = Me.Left
            ConfigData(1) = Me.Top
        End If
    End If
End Sub
Private Sub Options_Click(Index As Integer)
  Select Case Index
    Case 0
      Clock(0).ForeColor = vbRed
      Clock(1).ForeColor = vbRed
      ConfigData(2) = vbRed
    Case 1
      Clock(0).ForeColor = vbGreen
      Clock(1).ForeColor = vbGreen
      ConfigData(2) = vbGreen
    Case 2
      For i = 0 To 3
        ClockBG.Visible = False
        Options(i).Visible = False
      Next
    Case 3
      Unload Me
  End Select
End Sub
Private Sub ReadConfigFile(Filename As String)
On Error GoTo Handler
    Open Filename For Input As #1
    Input #1, ConfigData(0) 'Form Left
    Input #1, ConfigData(1) 'Form Top
    Input #1, ConfigData(2) 'Clock Forecolor
Handler:
    Close #1
End Sub
Private Sub WriteConfigFile(Filename As String)
On Error GoTo Handler
    Open Filename For Output As #1
    Print #1, ConfigData(0) 'Form Left
    Print #1, ConfigData(1) 'Form top
    Print #1, ConfigData(2) 'Clock Forecolor
Handler:
    Close #1
End Sub
Private Sub Timer1_Timer()
  Temp = Time
  Clock(0) = Format(Left(Temp, 8), "h:mm:ss")
  Clock(1) = Right(Temp, 2)
End Sub

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斥天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值