在VC上,我们常用的定时器是settimer,但是settimer在毫秒精度上误差很大,也就是在会有10多毫秒的误差,在多媒体应用上,一般每帧图像的获取都是要求毫秒精度的,所以一般用timeSetEvent,也叫多媒体定时器。
具体定义就不说了自己百度,以下是具体用法,基于vs2010的。
1、首先包含头文件:
#include <MMSystem.h>
#pragma comment(lib, "winmm.lib")
2.定义回调函数
声明:
void CALLBACK TimerCallback(UINT TimerID, UINT msg,DWORD dwUser,DWORD dwa,DWORD dwb);
定义
void CALLBACK TimerCallback(UINT TimerID, UINT msg,DWORD dwUser,DWORD dwa,DWORD dwb)
{
CHeadCount3DDlg* pHeadCount=(CHeadCount3DDlg*)dwUser;
pHeadCount->EncodeRight(TimerID);
}
3、使用
设置定时器:
UINT RightTime = timeSetEvent(40,1,&TimerCallback,(DWORD)this,TIME_PERIODIC);
停止定时器:
timeKillEvent(RightTime);