VS2013/MFC基於對話框編程:[14]定時器消息?

定時器消息可以說是windows所有消息中最常用的消息,許多事件需要通過定時觸發,比如最簡單的秒錶,還有工程軟件中的定時採樣等等都少不了定時器。本經驗通過簡單例子說明定時器的開啟、響應和終止。

VS2013/MFC基於對話框編程:[14]定時器消息

工具/原料

Visual Studio 2013

方法/步驟

新建Demo項目,打開對話框,添加兩個按鈕和一個靜態文本,修改相應的Caption。

程序功能:按下計時按鈕開始計時,將時間顯示在靜態文本中,復位按鈕可以對文本復位全零並關閉定時器。

VS2013/MFC基於對話框編程:[14]定時器消息

修改ID:計時按鈕ID為IDC_Timer,復位按鈕ID為IDC_Reset。

靜態文本ID為IDC_TimeDis,並添加變量CStatic m_time。

VS2013/MFC基於對話框編程:[14]定時器消息

雙擊計時按鈕生成按鈕按下事件處理函數,編輯函數,通過SetTimer函數啟動定時器;

參數1:nIDEvent,定時器ID;

參數2:nElapse,定時器定時時間,單位為毫秒;

參數3:回調函數,設為NULL即可。

VS2013/MFC基於對話框編程:[14]定時器消息

雙擊復位按鈕生成函數,編輯函數,通過KillTimer銷燬定時器,只需輸入一個參數(定時器ID),同時將文本復位為“00:00:00”。

VS2013/MFC基於對話框編程:[14]定時器消息

類嚮導,添加WM_TIMER消息處理函數。

VS2013/MFC基於對話框編程:[14]定時器消息

編輯定時器消息響應函數OnTimer,判斷定時器的ID,如果只有一個定時器可以不用判斷,但許多應用需要多個定時器,這時就適合switch語句進行判斷。

這裡三個變量mm,ss,mss設為靜態變量,否則每次進入都會重新賦值,不過如果將變量在頭文件中定義成成員變量就不需要這樣了。

VS2013/MFC基於對話框編程:[14]定時器消息

本程序實現了定時器的啟動、響應和終止,但是復位後重新計時時,那三個變量還是在原有基礎上計數,相當於是暫停後重新開始。

如果需要重新開始計數,只要定義一個成員變量作為定時器銷燬的標誌,然後在定時器消息中判斷標誌位後對變量進行清零即可 ,清零後立馬清除標誌位。

VS2013/MFC基於對話框編程:[14]定時器消息

VS2013/MFC基於對話框編程:[14]定時器消息

VS2013/MFC基於對話框編程:[14]定時器消息

注意事項

注意定時器的ID,根據ID響應不同的功能。

對話框, 消息, 定時器,
相關問題答案