`
mmdev
  • 浏览: 13303465 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

自己动手用VB打造桌面小钟

阅读更多

想自己写一个可爱的桌面小钟?永远在最上面,半透明,还可以随意拖动,其实非常简单,用Visual Basic 6只需十分钟,就可以写出下面这样可爱的小钟:

OK,如果你有一点VB的基本知识,按照下面的步骤一步一步地写:

1.首先,找一个漂亮的钟面,你可以直接用上面的图片,或者自己画一个也行。

2.用图片作Form的背景,调整一下大小,设置BorderStyle=0(None),AutoRedraw=True,ScaleMode=3(Pixel)。

3.放几个Line当表针,调整大小,颜色,用一个Timer让它们动起来,Intervel=100就足够了:

Private Const PI As Single = 3.1415926
Private Const ClockX = 41
Private Const ClockY = 48
Private Const SecLength = 25
Private Const MinLength = 17
Private Const HourLength = 11

Private Sub tmrGetTime_Timer()
Dim nSec As Long, nMin As Long, nHour As Long

nSec = Second(Now)
nMin = Minute(Now)
nHour = Hour(Now)
If nHour >= 12 Then nHour = nHour - 12

'Draw second pointer ***************************************
lineSec.X2 = ClockX + SecLength * Cos(PI / 2 - PI * nSec / 30)
lineSec.Y2 = ClockY - SecLength * Sin(PI / 2 - PI * nSec / 30)

'Draw minute pointer ***************************************
lineMin.X2 = ClockX + MinLength * Cos(PI / 2 - PI * nMin / 30)
lineMin.Y2 = ClockY - MinLength * Sin(PI / 2 - PI * nMin / 30)

'Draw hour pointer *****************************************
lineHour.X2 = ClockX + HourLength * Cos(PI / 2 - PI * nHour / 6 - PI * nMin / 360)
lineHour.Y2 = ClockY - HourLength * Sin(PI / 2 - PI * nHour / 6 - PI * nMin / 360)
End Sub

4.实现不规则窗体,用几个API函数,把透明色剔出掉,在Form_Load()中调用:

Private Sub SetRgn()
Dim nRgn As Long, nTRgn As Long
Dim i As Long, j As Long

nRgn = CreateRectRgn(20, 20, 21, 21)

For i = 0 To Me.ScaleWidth - 1
For j = 0 To Me.ScaleHeight - 1
If Me.Point(i, j) <> &HFF Then' 注意了:我的透明色是红色,你要改成实际颜色!
nTRgn = CreateRectRgn(i + 1, j + 1, i + 2, j + 2)
Call CombineRgn(nRgn, nRgn, nTRgn, RGN_OR)
DeleteObject nTRgn
End If
Next j
Next i
SetWindowRgn Me.hwnd, nRgn, True
DeleteObject nRgn
End Sub

5.实现鼠标拖动:

Dim pt As POINTAPI
Dim formX As Single, formY As Single

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
'save the position of cursor and form:
GetCursorPos pt
formX = Me.Left
formY = Me.Top
End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim newpt As POINTAPI
Dim nLeft As Long, nTop As Long

If Button = vbLeftButton Then
GetCursorPos newpt
nLeft = formX + (newpt.X - pt.X) * Screen.TwipsPerPixelX
nTop = formY + (newpt.Y - pt.Y) * Screen.TwipsPerPixelY
If nLeft < 200 Then nLeft = 0
If nTop < 200 Then nTop = 0
If nLeft > Screen.Width - Me.Width - 200 Then nLeft = Screen.Width - Me.Width
If nTop > Screen.Height - Me.Height - 200 Then nTop = Screen.Height - Me.Height
Me.Move nLeft, nTop
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
Me.PopupMenu mnuPop, vbPopupMenuLeftButton Or vbPopupMenuRightButton
End If
End Sub

6.像Winamp一样贴着边:上面已经实现啦!仔细看红色部分。

7.实现半透明其实最简单了,在2000/XP下只要写几行代码:

Private Sub SetTransparent(Optional ByVal b As Boolean = True)
Dim rtn As Long
rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn
' 透明度可调:0-255,255就完全不透明:
SetLayeredWindowAttributes Me.hwnd, 0, IIf(b, 127, 255), LWA_ALPHA
End Sub

98/NT系统就不行了,为了确保能正常调用这个API,先检查一下Windows版本:

Dim osinfo As OSVERSIONINFO
osinfo.dwOSVersionInfoSize = Len(osinfo)
GetVersionEx osinfo
If osinfo.dwMajorVersion >= 5 Then
SetTransparent
End If

8.最后一步,让小钟总在最前:

SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

编译,大功告成!剩下的功能比如报时什么的自己添加。如果你想直接下载:

EXE文件:http://javap2p.nease.net/soft/dclock.exe.zip

VB源代码:http://javap2p.nease.net/soft/dclock.zip

分享到:
评论

相关推荐

    小钟VB版DOS工具源码

    【小钟VB版DOS工具源码】是一个基于Visual Basic(VB)编程语言开发的DOS(磁盘操作系统)实用程序的源代码集合。在Windows系统中,虽然DOS已经不再作为主要的操作环境,但DOS命令行工具因其简洁高效的特点,依然在...

    小钟团队(资料生成器)VB源码

    【小钟团队(资料生成器)VB源码】是一个由小钟团队开发的软件工具,主要用于生成简单的资料申请表。这个工具使用Visual Basic (VB)编程语言编写,为用户提供了一个基础平台来创建和管理资料。VB是Microsoft开发的一...

    自制桌面钟表(vb)

    【标题】"自制桌面钟表(vb)"指的是使用Visual Basic(VB)编程语言创建一个可以在桌面上显示时间的小程序。这个项目可以帮助开发者学习和掌握VB中的Timer控件以及角度单位转换,特别是从度数到弧度的转换,因为这...

    透明桌面钟表 透明桌面钟表

    透明桌面钟表是一款创新的桌面应用,它允许用户在桌面上放置一个透明的钟表,以便于随时查看时间,同时不影响其他工作的进行。这个应用程序的独特之处在于它的设计,旨在与用户的桌面环境融为一体,提供一种既实用又...

    倒记时的小钟(VB6.0源代码),当输入时分秒按确定后,程序做显示倒计时,你可以在倒计时结束后去持行其它。

    【倒计时的小钟(VB6.0源代码)】是一个使用Visual Basic 6.0编程语言编写的软件应用,它的主要功能是提供一个倒计时功能,用户可以设定特定的时、分、秒,然后程序会开始倒计时,并在时间到达零时触发预设的事件或...

    一个小小钟

    【标题】:“一个小小钟”实际上是一个简单的时钟程序项目,可能是用编程语言实现的,目的是为了学习如何创建计时器功能,并测试特定定时器函数`timeSetEvent`的精度。`timeSetEvent`是Windows API中用于创建周期性...

    定时小钟[【时间,定时小钟功能提醒】

    在Windows环境下,可以利用`System.Windows.Forms.NotifyIcon`来显示桌面通知。当然,如果需要更复杂的提醒方式,如播放声音或弹出对话框,可以进一步研究相关的API或库。 在压缩包中的`ClockCode.exe`可能是这个...

    vc++智能小钟

    【VC++智能小钟】是基于Microsoft Visual C++开发的一款应用程序,主要功能是实现一个具有智能化特性的电子钟。对于初学者来说,这个项目提供了一个很好的学习平台,可以帮助他们理解和掌握VC++编程基础以及Windows ...

    《大钟和小钟》PPT教学课件.pptx

    在本节课中,我们将学习如何设计和使用PPT教学课件来教授音乐教育,特别是关于大钟和小钟的节奏教学。 一、音乐教育的重要性 音乐教育对学生的音乐素质和艺术鉴赏能力的提高具有重要作用。通过音乐教育,可以提高...

    vb倒计时代码

    vb倒计时代码 倒记时的小钟(VB6.0源代码),当输入时分秒按确定后,程序做显示倒计时,你可以在倒计时结束后去持行其它。

    CPP小钟课设作业

    【标题】"CPP小钟课设作业"是一个关于C++编程的课程设计项目,主要目的是构建一个名为“小钟”的程序。这个项目可能涉及到时间显示、计时器等功能,旨在帮助学习者掌握C++语言的基本知识,特别是与时间和日期相关的...

    文件比较器VB源码下载

    摘要:VB源码,文件操作,文件比较器 采用VB写的文件比较器(附源码下载),可比较两个文件的异同,内容差异(位置偏移量),打开程序后浏览选中两个需要比较的文件,点击“开始比较”按钮,即可进行文件比对。

    基于FLTK的小钟

    在“基于FLTK的小钟”项目中,FLTK被用来构建一个简单的时间显示程序,即一个小闹钟。这个程序能够实时更新当前时间,提供一个直观的时钟界面。 **FLTK的主要特点:** 1. **轻量级**:FLTK库的大小相对较小,对系统...

    大钟和小钟.docx

    《大钟和小钟》这首合唱歌曲,便是一堂精彩纷呈的音乐课的中心。它不仅是一首旋律优美的曲子,更是一堂充满教育意义的艺术课程。 这堂课的教学目标非常明确,就是要让学生能够在演唱这首歌曲的同时,培养对音乐的...

    VB为软件添加简有效期【适用于收费程序】

    摘要:VB源码,其它类别,有效期,小钟VB源码 VB为软件添加简有效期,适用于收费程序制作,基于ini的应用,保持和载入,在前期已经做过了,这次我教大家如何应用。  1.利用ini保持到系统【无数据版】,然后再由程序...

    VB封杀关键字实例下载

    摘要:VB源码,控件组件,封杀关键字 封杀关键字VB源码,本程序使用了窗口关键字自动关闭的代码,利用到“用户控件” Block 的运行。  关键字自动关闭用于:禁止某程序或者防止恶意程序运行。  里面代码是设置关键字...

    桌面时尚小时钟(要写多少才给上传~~~~~)

    在IT行业中,桌面小工具是用户个性化和提升效率的重要元素之一。"桌面时尚小时钟"是一个旨在美化桌面并提供时间显示功能的应用程序。这个初级作品虽然可能并不完美,但仍然可以为我们提供一些关于桌面时钟软件开发的...

    ps教程入门—Photoshop制作卡通小钟借鉴.pdf

    本教程主要介绍了如何使用Adobe Photoshop软件制作一个卡通小钟的步骤,适合初学者学习。以下是详细的知识点解析: 1. **新建文件**:创建一个新的Photoshop文档,设置宽度为15厘米,高度为10厘米,分辨率300像素/...

    Cartoon Clock

    一个很漂亮的桌面小钟 还可以创建一个小记事簿

    VB实现DOS定时关机

    摘要:VB源码,系统相关,DOS定时关机 VisualBasic6.0实现DOS定时关机源码,本程序就直接利用了“Shell”的命令代码,是一个引用cmd介入命令的代码,比如想测试网速:  Shell “ping -t”然后就会显示相关信息了  3....

Global site tag (gtag.js) - Google Analytics