#ifndef TIMER_ENGINE_HEAD_FILE #define TIMER_ENGINE_HEAD_FILE #pragma once #include #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> 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