Menu

关于Win32 Console的计时器

这是关于Win32 Console计时器的例子:   你可以使用2种方法进行计时器的实现  第一种是通过系统回调来实现的  

C++代码
        

  1. void CALLBACK TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)   
  2.     

  3. {   
  4.     

  5.     printf_s("The system timer callback . \n");   
  6.     

  7. }   
  8.     

  9. int main()   
  10.     

  11. {   
  12.     

  13.     //Start the timer.  
  14.     

  15.     MMRESULT nIDTimerEvent = timeSetEvent(1000, 0, TimeProc, 0, (UINT)TIME_PERIODIC);   
  16.     

  17.     if( nIDTimerEvent == 0 )   
  18.     

  19.         printf_s("Run the timer is bad . \n\n");   
  20.     

  21.   
  22.     

  23.     while(true)   
  24.     

  25.     {   
  26.     

  27.         Sleep(15);   
  28.     

  29.     }   
  30.     

  31.   
  32.     

  33.     return 0;   
  34.     

  35. }  

  第二种是通过对WM_TIMER的响应,通过消息循环来做,可以用到熟悉的SetTimer.  

C++代码
        

  1. void CALLBACK TimeProc( HWND hwnd, UINT message, UINT idTimer, DWORD dwTime)  
  2.     

  3. {   
  4.     

  5.    printf_s("The timer callback .\n");   
  6.     

  7. }   
  8.     

  9.   
  10.     

  11. int main()  
  12.     

  13. {   
  14.     

  15.      SetTimer(NULL,1,1000,TimeProc);   
  16.     

  17.   
  18.     

  19.      MSG   msg;     
  20.     

  21.   
  22.     

  23.      while(GetMessage(&msg,NULL,0,0))     
  24.     

  25.      {     
  26.     

  27.           if(msg.message==WM_TIMER)     
  28.     

  29.           {     
  30.     

  31.                DispatchMessage(&msg);     
  32.     

  33.          }     
  34.     

  35.      }     
  36.     

  37.      return 0;   
  38.     

  39. }  

  我自己是用的第二种,不过基于时间上的东西还有很多~~~

Categories:   Garfield's Diary

Comments