1)新建一个工程,保存
2)添加一个Button和一个Label
3)修改unit1.h代码如下: // --------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H // --------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> // --------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TLabel *Label1; void __fastcall Button1Click(TObject *Sender); void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); static void CALLBACK TimeProc(UINT uID,UINT uMsg, DWORD dwUser,DWORD dw1,DWORD dw2); // 定时器回调函数 int TimerID; // 定时器ID }; // --------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; // --------------------------------------------------------------------------- #endif
4)unit1.cpp代码如下: // ---------------------------------------------------------------------------
#include <vcl.h> #include "mmsystem.h" #pragma hdrstop #include "Unit1.h" // --------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // --------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TimerID = 0; } // --------------------------------------------------------------------------- void CALLBACK TForm1::TimeProc(UINT uID,UINT uMsg, DWORD dwUser,DWORD dw1,DWORD dw2) { Form1->Label1->Caption = Now(); } // --------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TimerID = timeSetEvent(1000, 0, (LPTIMECALLBACK)TimeProc, 0, TIME_PERIODIC|TIME_CALLBACK_FUNCTION); // 设定多媒体定时器,1000ms if(TimerID == 0) { ShowMessage("创建失败"); } } // --------------------------------------------------------------------------- void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { if(TimerID != 0) { timeKillEvent(TimerID); // 释放定时器 } } // ---------------------------------------------------------------------------
运行效果:点击按钮后,Label1开始显示时间 测试环境:BCB5 + WIN98
作者信息: "Mao Yanwei(citiz)" <myw_fool@citiz.net>
|