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