| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | #ifndef TIMER_ENGINE_HEAD_FILE#define TIMER_ENGINE_HEAD_FILE #pragma once#include <Mmsystem.h>#pragma comment(lib,"Winmm.lib")#define TIMES_INFINITY				DWORD(-1)							//无限次数//////////////////////////////////////////////////////////////////////////////////interface ITimerCallBack{public:	virtual void TimerCallBack(UINT_PTR iTimerID, WPARAM dwBindParameter = 0) = 0;};class CAutoLock{public:	CAutoLock(LPCRITICAL_SECTION lpCriticalSetion);	virtual ~CAutoLock();protected:	LPCRITICAL_SECTION   m_lpCriticalSetion;};// 定时器子项struct tagTimerItem{    // 时间参数	ITimerCallBack*                 pCallBack;                          // 回调绑定    DWORD							dwElapse;							// 倒数时间    DWORD							dwTimerID;							// 时间标识    DWORD							dwTimeLeave;						// 剩余时间    DWORD							dwRepeatTimes;						// 重复次数    WPARAM							dwBindParameter;					// 绑定参数};//////////////////////////////////////////////////////////////////////////////////// 类说明typedef std::list<std::shared_ptr<tagTimerItem>> CTimerItemArray;					// 子项数组// 定时器引擎class CTimerEngine{    // 状态变量protected:    bool							m_bService;							// 运行标志    // 配置定义protected:    DWORD							m_dwTimerSpace;						// 时间间隔    // 组件变量protected:	MMRESULT						m_timerId;    CTimerItemArray					m_TimerItemFree;					// 空闲数组    CTimerItemArray					m_TimerItemActive;					// 活动数组    CRITICAL_SECTION				m_CriticalSection;					// 锁定对象    // 函数定义public:    // 构造函数    CTimerEngine();    // 析构函数    virtual ~CTimerEngine();    // 服务接口private:    // 启动服务    virtual bool StartService();    // 停止服务    virtual bool ConcludeService();    // 接口函数public:    // 设置定时器    virtual bool SetTimer(ITimerCallBack*, DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter = 0);    // 删除定时器    virtual bool KillTimer(ITimerCallBack*, DWORD dwTimerID);    // 删除定时器    virtual bool KillAllTimer();    // 内部函数//private:    // 定时器通知    VOID OnTimerThreadSink();    //    static CTimerEngine* GetInstance();};//extern CTimerEngine g_TimerInstance;//////////////////////////////////////////////////////////////////////////////////#endif
 |