定時器消息的使用
定時器消息可以說是Windows所有消息中最常用的消息,許多事件需要通過定時觸發,比如最簡單的秒表,還有工程軟件中的定時采樣等等都少不了定時器。本文將通過一個簡單的例子來說明如何開啟、響應和終止定時器
定時器消息可以說是Windows所有消息中最常用的消息,許多事件需要通過定時觸發,比如最簡單的秒表,還有工程軟件中的定時采樣等等都少不了定時器。本文將通過一個簡單的例子來說明如何開啟、響應和終止定時器。
新建Demo項目
首先,我們需要新建一個Demo項目,并打開對話框。在對話框上添加兩個按鈕和一個靜態文本,并修改相應的Caption。程序的功能是按下計時按鈕開始計時,將時間顯示在靜態文本中,而復位按鈕則可以將文本復位為全零并關閉定時器。
修改ID和添加變量
接下來,我們需要對按鈕和靜態文本進行一些修改。將計時按鈕的ID改為IDC_Timer,復位按鈕的ID改為IDC_Reset。靜態文本的ID設置為IDC_TimeDis,并添加一個變量CStatic m_time。
啟動定時器
雙擊計時按鈕,生成按鈕按下事件處理函數,并編輯函數內容。通過SetTimer函數來啟動定時器。第一個參數是定時器的ID,第二個參數是定時器定時時間,單位為毫秒,第三個參數是回調函數,設為NULL即可。
銷毀定時器
雙擊復位按鈕,生成函數,并編輯函數內容。通過KillTimer函數來銷毀定時器,只需輸入一個參數,即定時器ID。同時,將文本復位為“00:00:00”。
處理定時器消息
使用類向導,添加WM_TIMER消息處理函數。然后,編輯定時器消息響應函數OnTimer,在函數中判斷定時器的ID。如果只有一個定時器,可以不進行判斷。但如果應用中需要多個定時器,就適合使用switch語句進行判斷。將mm、ss、mss這三個變量設為靜態變量,否則每次進入函數都會重新賦值。不過,如果將這些變量定義為成員變量,則無需這樣處理。
重新開始計數
本程序實現了定時器的啟動、響應和終止功能。但是,在復位后重新計時時,這三個變量仍然會在原有基礎上計數,相當于是暫停后重新開始。如果需要重新開始計數,只需定義一個成員變量作為定時器銷毀的標志。然后,在定時器消息中判斷標志位,如果需要重新開始,就對變量進行清零。清零后,立即清除標志位。