读书人

C++工具种定时器

发布时间: 2012-09-25 09:55:58 作者: rapoo

C++工具类——定时器

有时候我们需要用到定时器这样一个东西,但是我们如果去一个窗口里面 SetTimer,但我们又需要在一个非 UI 类(线程)里要用计时器,那么解耦就没有办法实现了。有没有更好的办法呢?


答案是肯定的,我看可以写一个单件定时器类,用来管理定时控制,并且全局访问。你可能需要的知识有:单件模板类、Boost 等。我们期望的使用方式是:

#include "timer.h"class CMyA{public:CMyA() : m_value(0){}void f(){::SetTimerCallback(this, 1000, TIMER_CALL_BIND(CMyA, _timer_proc));}private:void _timer_proc(){cout<<m_value++<<endl;}int m_value;};void _global_proc(){static int val = 0;cout<<val++<<endl;}int WinMain(HINSTANCE, HINSTANCE, LPCTSTR, int){// ...int _dummy;::SetTimerCallback(&_dummy, 1000, _global_proc);// ...return 0;}

通过这个计时器,我们可以实现其他一些强大的功能,比如窗口动画、事件管理等等。下一章将讲解基于该 Timer 的窗口动画类的实现。





读书人网 >C++

热点推荐