定時器消息可以說是windows所有消息中最常用的消息,許多事件需要通過定時觸發,比如最簡單的秒錶,還有工程軟件中的定時採樣等等都少不了定時器。本經驗通過簡單例子說明定時器的開啟、響應和終止。
工具/原料
Visual Studio 2013
方法/步驟
新建Demo項目,打開對話框,添加兩個按鈕和一個靜態文本,修改相應的Caption。
程序功能:按下計時按鈕開始計時,將時間顯示在靜態文本中,復位按鈕可以對文本復位全零並關閉定時器。
修改ID:計時按鈕ID為IDC_Timer,復位按鈕ID為IDC_Reset。
靜態文本ID為IDC_TimeDis,並添加變量CStatic m_time。
雙擊計時按鈕生成按鈕按下事件處理函數,編輯函數,通過SetTimer函數啟動定時器;
參數1:nIDEvent,定時器ID;
參數2:nElapse,定時器定時時間,單位為毫秒;
參數3:回調函數,設為NULL即可。
雙擊復位按鈕生成函數,編輯函數,通過KillTimer銷燬定時器,只需輸入一個參數(定時器ID),同時將文本復位為“00:00:00”。
類嚮導,添加WM_TIMER消息處理函數。
編輯定時器消息響應函數OnTimer,判斷定時器的ID,如果只有一個定時器可以不用判斷,但許多應用需要多個定時器,這時就適合switch語句進行判斷。
這裡三個變量mm,ss,mss設為靜態變量,否則每次進入都會重新賦值,不過如果將變量在頭文件中定義成成員變量就不需要這樣了。
本程序實現了定時器的啟動、響應和終止,但是復位後重新計時時,那三個變量還是在原有基礎上計數,相當於是暫停後重新開始。
如果需要重新開始計數,只要定義一個成員變量作為定時器銷燬的標誌,然後在定時器消息中判斷標誌位後對變量進行清零即可 ,清零後立馬清除標誌位。
注意事項
注意定時器的ID,根據ID響應不同的功能。