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