[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
编程语言
> 详细
MFC中OnTimer的应用
时间:
2015-02-06 10:56:49
阅读:
339
评论:
0
收藏:
0
[点我收藏+]
OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现: SetTimer, KillTimer()和OnTimer(). 粗略的说,Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 或者说Settimer是设置定时器的,Ontimer是响应Settimer消息的。当Settimer设置的时间到了,就会自动调动Ontimer()函数。 先了解下SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 ); 例如 SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器 在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了 于是SetTimer函数的原型变为: UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) 当使用SetTimer函数的时候,就会生成一个计时器。 SetTimer函数中 nIDEvent指的是计时器的标识,也就是名字。 nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。 第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认的是OnTime函数。 这个函数怎么生成的呢? 你需要在需要计时器的类的生成onTime函数: 在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成OnTime函数了。 然后在函数里添加代码,让代码实现功能。 每隔一段时间(SetTimer设置的时间)就会自动执行一次。 例: SetTimer(1,1000,NULL); 1:计时器的名称; 1000:时间间隔,单位是毫秒; NULL:使用onTime函数。 当不需要计时器的时候调用KillTimer(nIDEvent); 例如:KillTimer(1); //此处的ID号“1 ”应与SetTimer()中的ID号一致 如果需要要加入两个或者两个以上的 timer怎么办? 继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4...... SetTimer(2,1000,NULL); //ID为2,定时1000ms SetTimer(3,500,NULL); //ID为3,定时500ms WINDOWS会协调他们的。当然OnTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码: OnTimer(nIDEvent) { switch(nIDEvent) { case 1:........; break; case 2:.......; break; case 3:......; break; } } 在控制台中使用定时器不能简单的SetTimer了事,这在控制台里这种SetTimer的方式是有点麻烦的,需要自己写消息循环投递WM_TIMER消息。其实在控制台里可以使用多媒体时钟来计时: example: //启动计时器 MMRESULT nIDTimerEvent = timeSetEvent( 1000,//延时1秒 0, TimeProc, 0, (UINT)TIME_PERIODIC); if( nIDTimerEvent == 0 ) cout<<"启动计时器失败"<
#include
using namespace std; void CALLBACK TimeProc( HWND hwnd, UINT message, UINT idTimer, DWORD dwTime); int main() { SetTimer(NULL,1,1000,TimeProc); MSG msg; while(GetMessage(&msg,NULL,0,0)) { if(msg.message==WM_TIMER) { DispatchMessage(&msg); } } return 0; } void CALLBACK TimeProc( HWND hwnd, UINT message, UINT idTimer, DWORD dwTime) { cout<<"a timer comming"<
MFC中OnTimer的应用
原文:http://www.cnblogs.com/jack-jia-moonew/p/4276459.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!