<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函数的用法相关推荐

  1. delphi中setTimer函数的用法

    delphisetTimer函数用来做定时器,可以实现每隔一段时间运行某个程序,需要用到两个函数,SetTimer函数和KillTimer函数. 下面是一个简单的例子: var i :Integer ...

  2. C++:MFC SetTimer定时执行某一函数;

    1.函数说明: 函数原型: SetTimer这个API函数的原型 : UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID ...

  3. windows中定时操作(SetTimer函数用法)

    最近需要在服务端定时执行某个操作,于是需要用到SetTimer函数.当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间 ...

  4. vc中定时器的使用 (2)SetTimer函数的使用

    什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...

  5. VC++中定时器SetTimer函数的应用总结

    什么时候我们需要用到SetTimer函数呢?当你 需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...

  6. c语言memcpy是什么,C语言memcpy函数的用法

    介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...

  7. MFC总结之CListCtrl用法及技巧(二)

    续第一篇:MFC总结之CListCtrl用法及技巧(一) http://blog.csdn.net/zwgdft/article/details/7560592 本篇重点介绍:禁止拖动表头.让第一列居 ...

  8. 关于C语言中的malloc和free函数的用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  9. Python assert断言函数及用法

    Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...

  10. python中的counter()、elements()、most_common()和subtract()函数的用法

    python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...

最新文章

  1. APP专项测试关注点介绍
  2. 语音社交产品,安全合规“防坑指南”!
  3. 四十七、第二份国外的Python考试(上篇)
  4. python js 效率_巧用 db.system.js 提升20% 开发效率
  5. axios封装_VUE.JS请求工具Axios的封装
  6. java ftp commonsnet_用Java下载整个FTP目录(Apache Net Commons)
  7. SQL2K数据库开发十五之表操作查看表中的数据
  8. 项目管理(6):备战pmp
  9. 运算符和||运算符的优先级问题 专题
  10. java判断字符串是子串_【Java】判断字符串是否包含子字符串
  11. 大学为什么没有UI设计专业
  12. 3D Point Cloud Descriptors in Hand-crafted and Deep Learning Age: State-of-the-Art
  13. 微信小程序如何更换头像
  14. Echarts中国地图各省份区域设置不同的颜色
  15. 手机实现人体扫描建模 快速生成全彩3D人像模型
  16. MySQL基础(附练习题+答案)
  17. fftshift小技巧
  18. DataFrame,pandas索引,重置索引
  19. eclipse 项目中点击ctrl+左键不能进入方法
  20. [附源码]计算机毕业设计JAVA动物保护网站

热门文章

  1. labview卸载重装工具(NI卸载工具)
  2. cad道路里程桩号标注_cad桩号标注插件
  3. Linux抓包(wireshark+tcpdump)
  4. matpower和pandapower数据的转化
  5. HMM,MEMM,CRF模型的比较
  6. 模拟集成电路设计(拉扎维)第三章学习笔记
  7. python第三方模块下载方法(最详最细)
  8. python win32com 字体选择_用python的win32com模块替换word中的文字搞定批量打印奖状...
  9. python实现用户登录界面代码_python编辑用户登入界面的实现代码
  10. 【JAVA】java获取项目地址或tomcat绝对地址