当前位置:首页 > 编程学习 > SetTimer(), KillTimer() 使用

SetTimer(), KillTimer() 使用

编程学习2010-02-2360910

SetTimer函数的用法  


1 )用WM_TIMER来设置定时器  

先请看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函数的时候,就会生成一个计时器。


函数中nIDEvent指的是计时器的标识,也就是名字。

nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。

第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认认的是onTime函数。

这个函数怎么生成的呢?你需要在需要计时器的类的生成onTime函数:


在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里添加代码,让代码实现功能。

  

每隔一段时间就会自动执行一次。

  

例:

SetTimer(1,1000,NULL);

1:计时器的名称;

1000:时间间隔,单位是毫秒;  

NULL:使用onTime函数。  


当不需要计时器的时候调用

KillTimer(nIDEvent);

例如:

KillTimer(1);

  

2) 调用回调函数

此方法首先写一个如下格式的回调函数  

void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);

  

然后再用SetTimer(1,100,TimerProc)函数来建一个定时器,第三个参数就是回调函数地址。

  

二. 或许你会问,如果我要加入两个或者两个以上的 timer怎么办?

  

继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。。。。  

SetTimer(2,1000,NULL);  
SetTimer(3,500,NULL); 

WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:  

onTimer(nIDEvent)  
{  
    switch(nIDEvent)  
    {
        case 1:........;
            break;
        case 2:.......;
            break;
        case 3:......;
            break;
     } 
}


扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://apull.net/html/20100223133.html

分享给朋友:

相关文章

怎样学习C语言

怎样学习C语言

怎样学习C语言很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去...

MD5加密VB版

MD5加密VB版

'MD5加密VB版 '调用方法:str=MD5("Apull",32),就能得到"Apull"的32位的MD5。 Private m_lOnBits(30) Private m_l2Power(30) Private Const BITS_TO_A_BYTE = 8 Private Const BYTES_TO_A_WORD = 4 Private Const BITS_TO_A_WORD = 32 Private Fu...

VB.NET关于加密算法

VB.NET关于加密算法

加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的通信信道,它达到以下目的:  保密性:防止用户的标识或数据被读取。  数据完整性:防止数据被更改。  身份验证:确保数据发自特定的一方。  基本概念  1、散列(HASH)函数  散列(HASH)函数H也称哈希函数或杂凑函数等,是典型的多到一的函数,其输入为一可变长x(可以足够的长),输出一固定长的串h(一般为128位、160位,比输入的串短),该串h被称为输入x的Hash值(或称消息摘要Message  ...

HTML与ASCII码表

HTML与ASCII码表

HTML与ASCII码表Standard ASCII set, HTML Entity names, ISO 10646, ISO 8879, ISO 8859-1  Latin alphabet No. 1Browser support: All browsersASCIIHTMLHTMLDecHexSymbolNumberNameDescription32333435363738394041424344454647202122232425262728292A2B...