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

SetTimer(), KillTimer() 使用

编程学习2010-02-2353590

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://www.apull.net/html/20100223133.html

分享给朋友:

相关文章

制作网页28个常用小代码

制作网页28个常用小代码

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

ASP六大对象介绍

ASP六大对象介绍

Application对象 Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。 Application的属性:  方法如下: Application对象没有内置的属性,但是我们可以自行创建其属性。 <% Application("属性名")=值 %>    其实大部分Application变量都 存放在Contents集合中,当你创建一个新的Application变量时,其实...

6个变态的C语言Hello World程序

6个变态的C语言Hello World程序

下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello1.c    #define _________ } #define ________ putchar #define _______ main #define _(a) ________(a); #define ______ _______(){ #define...

ASP.NET Session的七点认识

ASP.NET Session的七点认识

  ASP.NET  Session的使用当中我们会遇到很多的问题,那么这里我们来谈下经常出现的一些常用ASP.NET Session的理解:ASP.NET  Session的七点认识之一  对于值类型的变量,Session中保存的是值类型的拷贝Session["__test0"] =1; int i = (int)Session["__test0"]+1; int j = (int)Session["__test0"];  结果i=2,j=1AS...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。