MFC 定时器使用方式
MFC 定时器使用方式
2011-04-30 12:24:58| 分类: 默认分类 | 标签: |字号大中小 订阅
用SetTimer函数 创建定时器
参数1表示定时器的ID,参数2表示时间间隔,最后一个参数是处理的函数,如果填NULL表示,使用系统默认的,默认处理函数是OnTimer()那个函数,在这里面写你要执行的操作就可以了,如果你有多个定时器要在这里写if(id == 1)类似的东西去区分不同的定时器,更换贴图最好是在OnTimer里面更换当前显示的图片编号,然后刷新界面,更换图片的工作让OnPaint去做,让他们各司其职。关闭定时器:KillTimer(1)
启动计时器
UINT ID_TIMER1 = 1 , ID_TIMER2 = 2 //设置id
然后再你需要的时机依次启动各个计时器:
SetTimer(ID_TIMER1 , 300);
……
SetTimer(ID_TIMER2 , 400);
……
……
OnTimer函数中这样写:
void CMyClass::OnTimer(UINT nIDEvent)
{
switch(nIDEvent)
{
case ID_TIMER1:
// id为1的计时器要做的事。
……
break;
case ID_TIMER2:
//id为2的计时器要做的事。
……
break;
……
……
}
}
一 SetTimer函数的用法
1) 函数原型及变形
SetTimer这个API函数的原型 :
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
回调函数:在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认认的是onTime函数。
例如 :
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(1,1000,NULL);
2)函数生成方法
在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里添加代码,让代码实现功能。
每隔一段时间就会自动执行一次。
3) 回调函数的格式
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
二. 多个Timer
把ID的值设为〉1的数,如:SetTimer(3,500,NULL);
由WINDOWS会协调他们的然onTimer函数要在函数体内添加每一个timer的处理代码:
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
三、KillTimer:取消定时器不再使用定时器后,我们应该调用KillTimer来取消定时。
KillTimer的原型:
BOOL KillTimer(HWND hWnd, // 窗口句柄
UINT_PTR uIDEvent // ID);
在MFC程序中我们可以直接调用KillTimer(int nIDEvent)来取消定时器。
MFC 定时器使用方式相关推荐
- MFC 定时器用法 SetTimer、KillTimer
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- 【181018】基于MFC文档方式制作的飞碟射击游戏
一款使用MFC文档方式编写的飞碟射击游戏,如上面截图所示,源码VC 6.0下编译通过. 源码下载地址:点击下载 备用下载地址:点击下载
- 【嵌入式系统开发15】STM32F103C8T6下通过定时器Timer方式实现时间的精准控制,实现串口通信并让LED等周期性地闪烁
本文目的是主要介绍通过STM32F103C8T6采用定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务.请设置一个5秒的 ...
- 用定时器Timer方式实现LED周期性闪烁
文章目录 一.环境配置 二.定时器简介 三.用STM32CubeMX配置工程 四.用Keil配置代码 五.运行效果 六.总结 七,参考资料 一.环境配置 软件:STM32CubeMX:6.6.1 Ke ...
- 51单片机实验 LED半秒闪烁 定时器0方式2 中断实现
51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现. C语言代码: #include "at ...
- MFC,ADO方式实现数据库操作
参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError ...
- 定时器实现方式之TimerTask、Timer
在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了.定时器的实现方式有很多种,今天总结最简单的实现方式.java 1.3引入了定时器框架,用于在定时器上下文中控制线程的 ...
- 使用PY003基于外部中断+定时器的方式实现NEC红外解码
写在前边 最近项目用到一款遥控器是38K红外载波,NEC协议的,找了很多帖子有看到用外部中断下降沿判断(但可惜判定数据的方式是while在外部中断里面死等的),有看到用100us定时器定时刷来判断,感 ...
- MFC下ODBC方式连接数据库
本篇文章主要记录VS2010环境下,MFC ODBC方式连接SQL Server数据库,通过ODBC数据源连接配置. 1.数据库 首先确保在SQL Server中已经创建好了数据库,如我使用的是cha ...
最新文章
- 关于jquery的$.fn和$
- 单目相机的内外参标定
- Linux下升级安装Python-2.7.8版本
- sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议
- 【Python爬虫】Python3+selenium环境配置
- java线程中的task_Java线程(四):Timer和TimerTask
- 快速锁定Windows XP桌面的几个方法
- mysql active_GitHub - vipshop/drc: MySQL active-active replication solution.
- 对着IDEA 配置方式
- java代码实现PDF转DOC文档
- 两个一一对应的txt文本去重
- Postman测试Soap协议接口
- php 博饼 源代码,php实现中秋博饼小游戏
- phpstudy linux安装教程
- 机器学习 主成分分析(Principal Component Analysis)
- SSM服装销售商城,毕业论文+源码+包运行
- 安利好用的idea查看日志的插件Grep Consol
- 电话那头原来是个大美女
- iOS中 @synthesize 和 @dynamic 区别
- 【活动预告】说说对 Coding 新一年的期许, Filco 蓝牙无线机械键盘等你拿!
热门文章
- 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
- 2-修改软件源让pip下载更快
- SDH光端机的应用介绍
- 什么是交换机?交换机的工作原理是什么?
- 【渝粤教育】广东开放大学 房屋建筑学 形成性考核 (50)
- Probability(概率) vs Likelihood(似然)
- java readline 超时_跳过Java中的BufferedReader readLine()方法
- php中间件怎么使用,laravel框架中间件简单使用方法示例
- network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...
- 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础