本文研究的主要是C++控制台用定时器的相关实例,具体如下。

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);
  }
}

总结

以上就是本文关于C++控制台用定时器实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

02-03 01:08