发表评论(0)作者:, 平台:, 阅读:10443, 日期: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