MFC中timer 的使用

 首先,要设置定时器。

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

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


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


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

 

 

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

  1. void OnTimer(   
  2.    UINT_PTR nIDEvent    
  3. );  


 

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

 

  1. void OnTimer(   
  2.    UINT_PTR nIDEvent    
  3. )  


 

 

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

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

 

 

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

  1. settimer(1,2000,NULL);  
  2.   
  3. settimer(2,3000,NULL);  
  4.   
  5. settimer(3,5000,NULL);  


 

则在ontimer消息处理函数中

 

  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. }  
在Windows,你可以使用计时器(Timer)来实现定时执行特定任务的功能。以下是使用计时器的基本步骤: 1. 包含头文件:在你的代码添加 `#include <windows.h>` 来引入Windows API。 2. 创建计时器:使用 `SetTimer` 函数来创建一个计时器。它的原型如下: ``` UINT_PTR SetTimer( HWND hWnd, // 窗口句柄,可以为NULL UINT_PTR nIDEvent, // 计时器ID,用于标识计时器 UINT uElapse, // 计时器间隔时间(以毫秒为单位) TIMERPROC lpTimerFunc // 计时器回调函数,可以为NULL ); ``` 示例代码: ``` HWND hWnd = NULL; // 设置为NULL表示非窗口计时器 UINT_PTR nIDEvent = 1; // 计时器ID,可自定义 UINT uElapse = 1000; // 计时器间隔时间,单位为毫秒 UINT_PTR timerId = SetTimer(hWnd, nIDEvent, uElapse, NULL); ``` 3. 处理计时器消息:当计时器到达指定间隔时间时,系统发送 `WM_TIMER` 消息到指定窗口或线程的消息队列。你需要处理这个消息来执行相应的任务。示例代码: ```cpp // 在消息循环处理消息 while (GetMessage(&msg, NULL, 0, 0)) { // ... if (msg.message == WM_TIMER) { // 执行定时任务 // ... } // ... } ``` 4. 销毁计时器:在不再需要计时器时,使用 `KillTimer` 函数来销毁它。示例代码: ```cpp HWND hWnd = NULL; // 设置为NULL表示非窗口计时器 UINT_PTR nIDEvent = 1; // 要销毁的计时器的ID KillTimer(hWnd, nIDEvent); ``` 请注意,上述示例是基于Windows API的原生方法。如果你使用的是MFC、Qt等框架,可能有更方便的封装方法来处理计时器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值