//头文件 Timer.h
#ifndef _TIMER_H_
#define _TIMER_H_
class CTimer
{
private:
unsigned int m_nIDTimer;
public:
CTimer();
virtual ~CTimer();
virtual void OnTimer(UINT uID, UINT uMsg, DWORD dw1, DWORD dw2);
unsigned int SetTimer(UINT uDelay);
void KillTimer();
static void CALLBACK TimeProc(UINT uID,UINT uMsg,DWORD dwUser,DWORD dw1, DWORD dw2);
};
#endif //(_TIMER_H_)
//Timer.cpp
#include "stdafx.h"
#include "Timer.h"
#include <MMSYSTEM.H>
#pragma comment(lib, "WINMM.LIB")
CTimer::CTimer()
{
m_nIDTimer=NULL;
}
CTimer::~CTimer()
{
if (m_nIDTimer)
{
timeKillEvent(m_nIDTimer);
m_nIDTimer=NULL;
}
}
unsigned int CTimer::SetTimer(UINT uDelay)
{
if (m_nIDTimer) timeKillEvent(m_nIDTimer);
m_nIDTimer=timeSetEvent(uDelay, 1, TimeProc, (DWORD)this, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
return m_nIDTimer;
}
void CTimer::KillTimer()
{
if (m_nIDTimer)
{
timeKillEvent(m_nIDTimer);
m_nIDTimer=NULL;
}
}
void CTimer::OnTimer(UINT uID, UINT uMsg, DWORD dw1, DWORD dw2)
{
}
void CALLBACK CTimer::TimeProc(UINT uID,UINT uMsg,DWORD dwUser,DWORD dw1, DWORD dw2)
{
CTimer *pTimer=(CTimer *)dwUser;
if (pTimer)
{
pTimer->OnTimer(uID, uMsg, dw1, dw2);
}
}