MFC 中设置定时器Timer的方法

时间:2021-01-11 18:02:56

在用settimer之前要知道;

1.同1个 settimer(,,)在一个循环里设置一次就行了,要是让其不断的set,是很可能执行不到ontimer()消息处理函数的,因为每次set都重新计时;

2.计时完毕,执行ontimer(),然后会重新计时的;

3.要销毁计时,用killtimer,要是想再计时,那就再settimer咯。 


下面开始:

首先,要设置定时器。

在init中(或其他的初始化函数里),调用函数

[cpp] view plaincopy
  1. UINT SetTimer(  
  2.    UINT nIDEvent,//定时器标记,  
  3.    UINT nElapse,//间隔时间  
  4.    void ( CALLBACK* lpfnTimer ) (HWNDUINTUINTDWORD) = NULL   
  5. )   


[cpp] view plaincopy
  1. settimer(1,2000,NULL);  


设置定时器1的间隔为2000毫秒。

 

其次,添加ontimer消息处理函数代码。

[cpp] view plaincopy
  1. void OnTimer(   
  2.    UINT_PTR nIDEvent    
  3. );  


 

在ontimer中的程序在定时器被触发的时候运行。

 

如果程序中有多个定时器,则他们共用一个ontimer消息处理程序。

在ontimer中,可以通过判断定时器标志(nIDEvent)来区分不同的定时器。

 

 

假设设置了三个定时器,标记分别为1,2,3。如

[cpp] view plaincopy
  1. settimer(1,2000,NULL);  
  2.   
  3. settimer(2,3000,NULL);  
  4.   
  5. settimer(3,5000,NULL);  


 

则在ontimer消息处理函数中

 

[cpp] view plaincopy
  1. void OnTimer(   
  2.    UINT_PTR nIDEvent    
  3. ){  
  4.   
  5. switch (nIDEvent)  
  6.   
  7. {  
  8.   
  9. case 1:  
  10.   
  11.   //do something  
  12.   
  13. break;  
  14.   
  15. case 2:  
  16.   
  17.   //do something  
  18.   
  19. break;  
  20.   
  21. case 3:  
  22.   
  23.    //do something  
  24.   
  25. break;  
  26.   
  27. default:  
  28.   
  29. }  
  30.   
  31. }