一、
VC 实现高精度定时器__基本流程
1、头文件包含
#include "mmsystem.h"
2、类成员中添加变量
UINT m_iTimerId; //
定时器句柄
3、创建回调函数,响应定时器事件
void CALLBACK CatchTimer
( UINT
IDEvent,
UINT
uReserved,
DWORD
dwUser,
DWORD
dwReserved1,
DWORD
dwReserved2)
{ //
在这里写定时器事件的处理
}
4、开始启动定时器
//设置定时器分辨率,1ms
timeBeginPeriod(1);
//产生间隔 100
毫秒,周期执行的定时器事件;启动定时器
m_iTimerId=timeSetEvent(1,100,CatchTimer,(DWORD)this-
>m_hWnd,TIME_PERIODIC);
5
、结束使用定时器
//
删除定时器事件
if(m_iTimerId)
timeKillEvent(m_iTimerId);
//
清除定时器分辨率
timeEndPeriod(1);
设置两个时钟定时器,一个间隔是
1 毫秒,一个间隔是 2 秒,
“
每执行一次,输出当前系统时钟值到文件
cure.out”
,以 比较此定时器的精确度。
(此程序在中文
windows95 及 Microsoft VC5.0
编译通过。只节取与定时器有关的部分程序。)
#include < stdio.h >
//
包含所用系统函数的头文件,
如果编译有问题,可调整此语句的位置
#include < mmsystem.h >
//定义 1 毫秒和 2
秒时钟间隔,以毫秒为单位
#define ONE_MILLI_SECOND1
#define TWO_SECOND 2000
//
定义时钟分辨率,以毫秒为单位
#define TIMER_ACCURACY1
UINT wTimerRes_1ms,wTimerRes_2s; //
定义时间间隔
UINT wAccuracy;//
定义分辨率
UINT TimerID_1ms,TimerID_2s;//
定义定时器句柄
CCureApp::CCureApp()
: fout("cure.out", ios::out)//
“
打开输出文件
cure.out”
{
// TODO: add construction code here,
// Place all significant
initialization in InitInstance
//
给时间间隔变量赋值
wTimerRes_1ms = ONE_MILLI_SECOND ;
wTimerRes_2s = TWO_SECOND;