c++定时模块
来源:互联网 发布:任我行 陈奕迅 知乎 编辑:程序博客网 时间:2024/06/16 01:46
class IMTimeEvent{public:virtual void TimeOut() =0;};class MAPI MTimer{public:MTimer(void);~MTimer(void);BOOL Start(int millTime,IMTimeEvent* pEvent);BOOL Stop(IMTimeEvent* pEvent);void StopAll();typedef std::map<IMTimeEvent*,UINT_PTR> TimeEvents;static TimeEvents s_TimeEvents;};
MTimer::TimeEvents MTimer::s_TimeEvents;extern VOID CALLBACK MTimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime){for (MTimer::TimeEvents::const_iterator it = MTimer::s_TimeEvents.begin();it != MTimer::s_TimeEvents.end();++it){if ((*it).second == iTimerID){(*it).first->TimeOut();break;}}}MTimer::MTimer(void){}MTimer::~MTimer(void){//StopAll();}BOOL MTimer::Start(int millTime,IMTimeEvent* pEvent){Stop(pEvent);UINT_PTR timeID = SetTimer(NULL,0,millTime,MTimerProc);BOOL rtn = FALSE;if ( 0 !=timeID ){s_TimeEvents[pEvent] = timeID;rtn = TRUE;}return rtn;}BOOL MTimer::Stop(IMTimeEvent* pEvent){BOOL rtn =true;TimeEvents::iterator it = s_TimeEvents.find(pEvent);if (s_TimeEvents.end() != it){rtn = KillTimer(NULL,(*it).second);s_TimeEvents.erase(it);}return rtn;}void MTimer::StopAll(){for (TimeEvents::const_iterator it = s_TimeEvents.begin();it != s_TimeEvents.end();++it){KillTimer(NULL,(*it).second);}}
使用的时候必须继承一个IMTimeEvent接口,并且实现TimeOut()函数,MTimer类做为成员函数使用,可能我说的不是很清楚,就用一个简单的sample说一下吧
class A: public IMTimeEvent
{
public:
//IMTimeEvent
virtual void TimeOut();
MTimer m_Timer;
};
void A::TimeOut()
{
//你想要定时实现的东西
}
main()
{
m_Timer.Start(1000, this);
while(getchar()!=' ')
{
}
m_Timer.Stop(this);
}
0 0
- c++定时模块
- 定时任务模块,附带定时采集实现
- 4.3.4 master_wakeup.c:可唤醒模块(qmgr、pickup)唤醒(定时)事件初始化
- 定时任务 模块 node-schedule
- c#web定时任务
- centos 定时任务c
- 【C】定时关机
- HCS12XEP100 ATD模块定时中断采样
- 精确定时调度模块开发设计
- nodejs模块 node-schedule使用,定时任务
- Python使用signal模块实现定时执行
- python常用模块(不定时更新)
- nodejs模块 node-schedule使用,定时任务
- ansible定时任务模块和用户组模块使用
- C语言 -- 定时关机程序
- C定时关机小程序
- DS18B20温度模块.C
- 液晶显示模块.C
- c++ 析构函数的调用
- 八大排序经典算法(图解+参考源代码)
- 【学习】数据挖掘准则
- 一个自己编写JS日历
- 状态压缩 之 hdu 1074 Doing Homework
- c++定时模块
- Android抓包之Tcpdump和WireShark__7
- 程序员收入排行:Java最高
- gdb 多线程调试
- Android studio AIDL 编译问题处理
- Android抓包之Tcpdump和WireShark__8
- 上拉电阻的作用【图文】
- HDU 1358kmp
- extern关键字详解