简单使用多媒体定时器






4.61/5 (14投票s)
2003 年 3 月 12 日
1分钟阅读

83437

3663
演示了在用户类中简单使用多媒体定时器。
引言
本文介绍如何在任何你编写的类中使用计时器。当我想要在应用程序中使用计时器时,总是遇到同样的问题。问题在于,我希望能够在不需要考虑该类是 CWnd 还是一个简单的 CDummyClass 的情况下,将计时器包含在一个需要它的类中。这个想法很简单,就是使用模板来完成这项工作,并使用多媒体计时器。
多媒体计时器的主要问题是你将要用来完成工作的回调函数,我只是试图让它清晰简单。如果这篇文章听起来不好,下次我会努力改进。如果这样,请原谅我,因为这是我的第一篇文章 ;-)
使用代码
使用这个类非常简单。你只需要包含
CClock<THEMOTHERCLASS > myClock;
例如,如果你打算在 CMyClass 中插入一个时钟,你只需添加这个 CClock<CMYCLASS> myClock; 你需要做的最后一件事情来结束这个过程是创建一个名为 TimerHappened() 的函数。每当计时器触发时,都会调用这个函数。这个计时器可以使用来自多媒体计时器的不同值进行设置。
#include "clock.h" //somewhere in your code CClock<CMYCLASS> myClock; myClock.SetCallBack(this); myClock.SetDelay(100,TIME_ONE_SHOT); // in ms for a one shot timer // start the clock myClock.start(); void CMyClass::TimerHappened(int id) { TRACE("I've been hit once in my life time\n"); }
当然,你可以调用许多方法,例如
- 暂停()
- 恢复()
关注点
编写这段代码让我想起了模板的使用... :-)
历史
这是这个计时器的 V1.0 版本。如果需要,或者有人要求,我会进行更改...