多媒体定时器timeSetEvent

来源:互联网 发布:万达电商 网络总裁不 编辑:程序博客网 时间:2024/05/21 10:29

    在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);