MFC SetTimer函数的用法
<span style="color:#ff0000;">OnTimer()函数是响应用SetTimer()函数设定的时钟发送的时钟消息的,你没设定时钟,就不会有时钟消息,OnTimer()里的语句当然也不会被调用。</span>
Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。
一 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);
用法如下:SetTimer(1,1000,NULL);1:计时器的名称;1000:时间间隔,单位是毫秒;NULL:使用onTime函数
2)函数生成方法
在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里添加代码,让代码实现功能。
每隔一段时间就会自动执行一次。
在每次时间到1s时会触发WM_TIMER消息,其消息响应函数如下:
void CXXX::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 // 此处加入如下代码就好了: switch() { case 1: //做该做的事情 //当不需要的时候在此处调用KillTimer(1); break; default: break; }
CDialog::OnTimer(nIDEvent);
}
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 SetTimer函数的用法相关推荐
- delphi中setTimer函数的用法
delphisetTimer函数用来做定时器,可以实现每隔一段时间运行某个程序,需要用到两个函数,SetTimer函数和KillTimer函数. 下面是一个简单的例子: var i :Integer ...
- C++:MFC SetTimer定时执行某一函数;
1.函数说明: 函数原型: SetTimer这个API函数的原型 : UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID ...
- windows中定时操作(SetTimer函数用法)
最近需要在服务端定时执行某个操作,于是需要用到SetTimer函数.当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间 ...
- vc中定时器的使用 (2)SetTimer函数的使用
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- VC++中定时器SetTimer函数的应用总结
什么时候我们需要用到SetTimer函数呢?当你 需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- c语言memcpy是什么,C语言memcpy函数的用法
介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...
- MFC总结之CListCtrl用法及技巧(二)
续第一篇:MFC总结之CListCtrl用法及技巧(一) http://blog.csdn.net/zwgdft/article/details/7560592 本篇重点介绍:禁止拖动表头.让第一列居 ...
- 关于C语言中的malloc和free函数的用法
一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...
- Python assert断言函数及用法
Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...
- python中的counter()、elements()、most_common()和subtract()函数的用法
python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...
最新文章
- APP专项测试关注点介绍
- 语音社交产品,安全合规“防坑指南”!
- 四十七、第二份国外的Python考试(上篇)
- python js 效率_巧用 db.system.js 提升20% 开发效率
- axios封装_VUE.JS请求工具Axios的封装
- java ftp commonsnet_用Java下载整个FTP目录(Apache Net Commons)
- SQL2K数据库开发十五之表操作查看表中的数据
- 项目管理(6):备战pmp
- 运算符和||运算符的优先级问题 专题
- java判断字符串是子串_【Java】判断字符串是否包含子字符串
- 大学为什么没有UI设计专业
- 3D Point Cloud Descriptors in Hand-crafted and Deep Learning Age: State-of-the-Art
- 微信小程序如何更换头像
- Echarts中国地图各省份区域设置不同的颜色
- 手机实现人体扫描建模 快速生成全彩3D人像模型
- MySQL基础(附练习题+答案)
- fftshift小技巧
- DataFrame,pandas索引,重置索引
- eclipse 项目中点击ctrl+左键不能进入方法
- [附源码]计算机毕业设计JAVA动物保护网站
热门文章
- labview卸载重装工具(NI卸载工具)
- cad道路里程桩号标注_cad桩号标注插件
- Linux抓包(wireshark+tcpdump)
- matpower和pandapower数据的转化
- HMM,MEMM,CRF模型的比较
- 模拟集成电路设计(拉扎维)第三章学习笔记
- python第三方模块下载方法(最详最细)
- python win32com 字体选择_用python的win32com模块替换word中的文字搞定批量打印奖状...
- python实现用户登录界面代码_python编辑用户登入界面的实现代码
- 【JAVA】java获取项目地址或tomcat绝对地址