⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accuratetimer.cpp

📁 视频监控vc源代码.对于做视频系统的朋友们很有帮助
💻 CPP
字号:

#include "accuratetimer.h"

CAccurateTimer::CAccurateTimer(void)
:lpCallback(NULL) {
   m_nTickTimeMark= timeGetTime();
   GetSystemTimeAsFileTime( (LPFILETIME)&m_n64TimeMark );
   hEvent=CreateEvent(NULL,false,false,NULL);
   uID=0;
}

CAccurateTimer::~CAccurateTimer(void) {
	StopEvent();
	CloseHandle(hEvent);
}

LONGLONG CAccurateTimer::Time(void) {
   return(timeGetTime()-m_nTickTimeMark)*10000+m_n64TimeMark;
}

int CAccurateTimer::Sleep(unsigned long nTime) {
   UINT id;
   id=timeSetEvent(nTime,0,(LPTIMECALLBACK)hEvent,0,TIME_ONESHOT|TIME_CALLBACK_EVENT_SET);
   WaitForSingleObject(hEvent,nTime+10);
   timeKillEvent(id);
   return 0;
}

void CALLBACK CAccurateTimer::TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dwR1,DWORD dwR2) {
   CAccurateTimer &pthis=*((CAccurateTimer*)dwUser);
   pthis.lpCallback(uID,pthis,pthis.dwParam);
}

int CAccurateTimer::SetEvent(unsigned long nTime , LPACTIMER_ROUTINE lpCallBack,DWORD dwParam) {
   if ( lpCallBack==NULL )
      return -1;
   uID=timeSetEvent(nTime,0,CAccurateTimer::TimeProc,(DWORD_PTR)this,TIME_CALLBACK_FUNCTION|TIME_PERIODIC);
   if ( uID==0 )
      return -1;
   this->lpCallback=lpCallBack;
   this->dwParam=dwParam;
   return 0;
}

int CAccurateTimer::StopEvent(void) {
   if ( uID!=0 ) {
      timeKillEvent(uID);
      this->lpCallback=NULL;
      uID=0;
   } else
      return -1;
   return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -