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