龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

一个使用多媒体定时器的简单例子

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
1)新建一个工程,保存 2)添加一个Button和一个Label 3)修改unit1.h代码如下: // --------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H // --------------------------------

  1)新建一个工程,保存

  

  

2)添加一个Button和一个Label

  

  

3)修改unit1.h代码如下:

  

// ---------------------------------------------------------------------------

  

#ifndef Unit1H

  

#define Unit1H

  

// ---------------------------------------------------------------------------

  

#include

  

#include

  

#include

  

#include

  

// ---------------------------------------------------------------------------

  

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

  

#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_PERIODICTIME_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)"

  

精彩图集

赞助商链接