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

SetTimer(), KillTimer() 使用

编程学习2010-02-2358660

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

分享给朋友:

相关文章

代码迷惑技术如何保护Java免遭逆向工程

代码迷惑技术如何保护Java免遭逆向工程

很少有问题比程序员遇到不访问无法利用的源代码就无法解决的漏洞更令人沮丧的了。你是否在通过一个在线开源库修补代码,或正在调用常用操作系统例行程序;你可能每周都要花时间处理不是由你编写,因而也无法访问其源代码的代码。因为Java字节码包含许多和原始代码相同的信息,所以很容易对Java类文件执行逆向工程。另外,Java程度以其“一旦编写,随处运行”特性而闻名。虽然并非Java语言的专利,但代码反编译从未在Java开发者之中得到如此公开或普遍地利用。反编译的对...

VB连接SQLServer数据库操作代码

VB连接SQLServer数据库操作代码

第一步,在ModConString模块中定义一系列变量'定义一个属性过程反映连接字符串Public Property Get conString() As Variant conString = "data source=.;initial catalog=Sims_four;user End Property'定义一个提供者反映数据库类型Public Property Get conProvide() As Variant co...

制作网页28个常用小代码

制作网页28个常用小代码

1、oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu=return(false)><td>no</table>  可用于Table2、<body onselectstart="return false"> 取消选取、防止复制3、onpaste="retu...

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...