| 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
 
 
  |