VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 用VB5设计多功能计时器
发表评论(0)作者:, 平台:, 阅读:10358, 日期:2000-03-12


用VB5设计多功能计时器




平朔安太堡露天矿工程部 刘宪权

利用VB5的Timer控件,可以很容易地设计出一个简单计时器,如果再结合一些其它函数或方法,就会设计出功能强大的多媒体计时器,本例以一个焖大米计时程序来说明设计过程和方法。

本人经常用压力锅焖大米,将锅放到煤气灶上后,又回到电脑前工作,过一会儿就把焖大米的事忘了,因此,等闻到大米糊味后,才去关火的事曾发生过无数次,尽管每次都表示要吸取教训,但仍然无法痛改前非,于是想到了设计了一个多媒体计时程序,该程序的主要功能为计时,兼有视觉和听觉提示。程序运行时,窗口有文字提示和开始时间、当前时间以及进程显示,当到点时,会奏一段音乐;另外,为了竭尽提醒之能事,在程序处于运行状态时,窗口标题栏和Windows任务栏的相应图标不停地闪烁。

奏乐和闪烁功能是通过调用Windows API 函数mciExecute和FlashWindow来实现的。为了实现窗口标题栏和任务栏图标的闪烁,需另外添加一个窗体Form2,并设置Form2为启动窗体,程序启动并实现闪烁后,使Form2关闭,为了不影响其它工作,Form1窗口运行状态缺省设置为最小,即只在任务栏闪烁,到时(10分钟)会奏乐。

Form1的界面如图1(略)所示,共有六个Label控件,名称分别为lblInfo、Label1、Label2、Labe3、 Label4、Label5;其 Autosize 属性均设置为 True; 两个Command控件,名称分别为cmdStart和cmdExit;两个timer控件,Tmrflash的Interval属性为200,tmrCount的Interval属性为1000;一个进程条控件,名称为prb。


Form1的代码如下:


Option Explicit

Private StartTime As Single

Private Declare Function FlashWindow Lib "user32" _

(ByVal hwnd As Long, ByVal bInvert As Long) As Long

Private Declare Function mciExecute Lib "winmm.dll" _

(ByVal lpstrCommand As String) As Long

Private Sub cmdExit_Click()

Dim y

y = mciExecute("close c:\windows\media\canyon.mid")

End

End Sub


Private Sub cmdStart_Click()

prb.Value = 0

StartTime = 0

tmrCount.Enabled = True

Label3.Caption = Time

End Sub


Private Sub Form_Load()

Left = (Screen.Width - Width) \ 2

Top = (Screen.Height - Height) \ 2

Label3.Caption = Time

End Sub


Private Sub Tmrflash_Timer()

Dim Rt As Long

Rt = FlashWindow(hwnd, CLng(True))

End Sub


Private Sub tmrCount_Timer()

Form2.Hide

Dim Percent

If StartTime = 0! Then

StartTime = Timer

End If

Label5.Caption = Time

Dim TimeNeed As Integer

TimeNeed = 600

Percent = 100 * (Timer - StartTime) / TimeNeed

If Percent < 100 Then

Dim TimePassed

prb.Value = Percent

TimePassed = Int(Percent * TimeNeed / 6000)

Label1.Caption = "已焖 " & TimePassed & " 分"

lblInfo.Caption = "正在焖着...请不要外出"

Else

prb.Value = 100

lblInfo.Caption = "大米已焖熟,立即关火!"

lblInfo.FontBold = True

lblInfo.ForeColor = vbRed

Label1.Caption = " 已焖 " & CInt(Percent * TimeNeed / 6000) & " 分"

Dim x

x = mciExecute("play c:\windows\media\canyon.mid")

tmrCount.Enabled = False

End If

End Sub



Form2窗口不放置任何控件,将WindowsState属性设置为最小,其代码如下:


Option Explicit

Private Sub Form_Load()

Form1.Show

End Sub