TimerProc

如果在程式的整個執行過程中使用計時器,一般在處理WM_CREATE訊息時或WinMain中訊息循環前調用SetTimer,在處理WM_DESTROY訊息時或在WinMain中訊息循環後return前調用KillTimer。根據SetTimer中的參數不同,有三種方法使用計時器。

基本介紹

  • 中文名:TimerProc
  • 方法:三種方法
  • 調用:SetTimer
  • 調用:KillTimer
簡介,發展,

簡介

  • 使用計時器的
    方法一:
  • 時指定視窗句柄hWnd,nIDEvent中指定計時器ID,將lpTimerFunc置NULL從而不使用TimerProc;在視窗過程中處理WM_TIMER訊息。,使用SetTimer中指定的hWnd和id。最好使用#define定義timer的id,例如:
    #define ID_TIMER 1
    SetTimer(hWnd,ID_TIMER,1000,NULL) ;
    KillTimer(hWnd,ID_TIMER) ;
    方法二:

發展

  • 調用SetTimer時指定視窗句柄hWnd,nIDEvent中指定計時器ID,lpTimerFunc參數不為NULL而指定為TimerProc函式的指針。這種方法使用TimerProc函式(名字可自定)處理WM_TIMER訊息:
    void CALLBACK TimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
    {
    //處理WM_TIMER訊息
    }
    TimerProc的參數hwnd是在調用SetTimer時指定的視窗句柄。Windows只把WM_TIMER訊息送給TimerProc,因此訊息參數總是等於WM_TIMER。iTimerID值是計時器ID,dwTimer值是與從GetTickCount函式的返回值相容的值。這是自Windows啟動後所經過的毫秒數。 使用這種方法時,相關函式調用的形式為:
    SetTimer(hWnd,ID_TIMER,1000,TimerProc) ;
    KillTimer(hWnd,ID_TIMER) ;
    方法三:
  • 調用SetTimer時不指定視窗句柄(為NULL),iTimerID參數自然被忽略,lpTimerFunc不為NULL而指定為TimerProc的指針。正如上面SetTimer的討論中所說的,此時SetTimer的返回值正是新建立的計時器的ID,需將這個ID保存以供KillTimer銷毀計時器時所用。當然,KillTimer的hWnd參數也置為NULL。這種方法同樣用TimerProc處理WM_TIMER訊息。
    UINT_PTR iTimerID ;
    iTimerID = SetTimer(NULL,0,1000,TimerProc) ;
    KillTimer(NULL,iTimerID) ;
    使用這種方法的好處是不必自己指定計時器ID,這樣就不必擔心用錯ID。

相關詞條

熱門詞條

聯絡我們