[C-C++]控制台用定时器

本文介绍如何在MFC程序与控制台程序中使用定时器功能。包括使用SetTimer()设置定时器,KillTimer()关闭定时器,以及在OnTimer()中处理定时任务。还提供了一个控制台程序实现定时功能的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Timer在MFC程序中的使用

MFC中有一个很好用的定时器函数。

  • 使用SetTimer()进行设置定时器
  • 使用KillTimer()关闭定时器
  • OnTimer()函数中,响应WM_TIMER这个消息,也就是定时器的处理函数。

源代码

#define  TIMER_UDP_QFX  3//定时器的ID
int Period = 1000;//1000ms的定时器
//设置一个定时器
SetTimer(TIMER_UDP_QFX, Period, NULL);

//在定时器处理函数中设置自己的处理代码
void CFlightMissionPage::OnTimer(UINT_PTR nIDEvent)
{
    //UPD 更新界面
    if (TIMER_UDP_QFX == nIDEvent)
    {//如果定时器ID是 TIMER_UDP_QFX 时,进行处理
     //······
     //处理代码
     //······
    }
}
//不需要定时器时,关闭定时器
KillTimer(TIMER_UDP_QFX);

Timer在控制台程序中的使用

在对实时指标不是非常苛刻时,这个功能可以帮助我们完成很多功能。那么问题来了,这个可以用在一般控制台程序中吗?答案当然是肯定的。

需要用的函数

UINT_PTR SetTimer(  HWND hWnd,              // handle to window
  UINT_PTR nIDEvent,      // timer identifier
  UINT uElapse,           // time-out value
  TIMERPROC lpTimerFunc   // timer procedure
  );

VOID CALLBACK TimerProc(
  HWND hwnd,         // handle to window
  UINT uMsg,         // WM_TIMER message
  UINT_PTR idEvent,  // timer identifier
  DWORD dwTime       // current system time
);

源代码

#include <Windows.h>

//控制台消息响应
void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
    if(1 == idEvent)
    {//如果是定时器1
        ::MessageBeep(0);//Beep叫
    }

}

int main()
{

    int TimerID = 1;//Timer的ID是1
    int peried = 1000;//Timer的间隔是 1000ms

    //设置Timer   
    ::SetTimer(NULL, TimerID, peried, &TimerProc);

    ::MSG msg;
    while(::GetMessage(&msg, NULL, 0, 0))
    {
        ::DispatchMessage(&msg);
    }
}

donate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值