如何使用SetTimer MFC

2021-04-20 01:15:31 字數 2029 閱讀 2047

timer事件,即定時器事件,是在遊戲程式設計中,經常使用的乙個事件。借助它可以產生定時執行動作的效果。這篇文章,就和大家一起**一下如何使用settimer()函式。

1、settimer定義在那裡?

settimer表示的是定義個定時器。根據定義指定的視窗,在指定的視窗(cwnd)中實現ontimer事件,這樣,就可以相應事件了。

settimer有兩個函式。乙個是全域性的函式::settimer()

uint settimer(

hwndhwnd,               // handle of window for timer messages

uintnidevent,           // timer identifier

uintuelapse,            // time-out value

timerproclptimerfunc        // address of timer procedure);

其中hwnd 是指向cwnd的指標,即處理timer事件的視窗類。說道視窗類(cwnd),我們有必要來看一下cwnd的繼承情況:cwnd有以下子類:cframewnd,cdialog,cview,ccontrolbar等類。這也意味這些類中都可以定義settimer事件。

同時,settimer()在cwnd中也有定義,即settimer()是cwnd的乙個成員函式。cwnd的子類可以呼叫該函式,來設定觸發器。

uint settimer( uint nidevent, uint nelapse, void (callback export* lpfntimer)(hwnd, uint, uint, dword) );

引數含義:

nidevent:是指設定這個定時器的id,即身份標誌,這樣在ontimer()事件中,才能根據不同的定時器,來做不同的事件響應。這個id是乙個無符號的整型。

nelapse

是指時間延遲。單位是毫秒。這意味著,每隔nelapse毫秒系統呼叫一次ontimer()。

void (callback export* lpfntimer)(hwnd, uint, uint, dword)

意思是,指定應用程式提供的timerproc**函式的位址,來處裡這個timer事件。如果是null,處理這個timer事件的定義這個timer的cwnd物件。他將wm_timer訊息傳遞給這個物件,通過實現這個物件的ontimer()事件來處理這個timer事件。

所以,一般情況下,我們將這個值設為null,有設定該定時器的物件中的ontimer()函式來處理這個事件。

同樣的,我們再看看killtimer()和ontimer()的定義:

killtimer同settimer()一樣,他也有兩個,乙個是全域性的::killtimer(),另乙個是cwnd的乙個函式。他的宣告如下:

//全域性函式

bool killtimer(

hwndhwnd,       // handle of window that installed timer

uintuidevent      // timer identifier);

//cwnd函式

bool killtimer( int nidevent );

這兩個函式表示的意思是將id為nidevent的定時器移走。使其不再作用。其用法如同settimer()一樣。

再看看ontimer()

afx_msg void ontimer( uint nidevent );

ontimer()是響應cwnd物件產生的wm_timer訊息。nidevent表示要響應timer事件的id。

二、timer事件的使用:

由以上的分析,我們應該很清楚,如何來使用timer事件。假定我們在檢視上畫乙個漸變的動畫。我們首先在選單欄上新增乙個選單項,給這個選單新增命令響應:

pview->settimer(1,1000,null);//pview是檢視類的指標,這裡是在檢視類當中設定乙個定時器。

新增完畢,再給檢視類新增乙個wm_timer事件的相應。在ontimer()函式中編寫漢書,進行相應。

如此,就能做出動畫。

如何使用 滅火器如何使用

滅火器的種類不同使用方法也不相同,下面單獨針對乾粉滅火器 泡沫滅火器和二氧化碳滅火器使用方法說明。一 乾粉滅火器的使用方法 適用範圍 適用於撲救各種易燃 可燃液體和易燃 可燃氣體火災,以及電器裝置火災。1 右手拖著壓把,左手拖著滅火器底部,輕輕取下滅火器。2 右手提著滅火器到現場。3 除掉鉛封。4 ...

如何使用 如何正確使用定速巡航

現在隨著造車技術的不斷創新和改進,越來越多的高科技功能都應用到了汽車上,不僅提供了實用性,也讓我們享受到了科技的快感。今天我們就聊一聊一項可以實現車輛自動駕駛的功能 定速巡航。定速巡航 cruise control system 簡稱ccs,簡單的理解就是給車子設定乙個速度值,駕駛員只需要掌握方向,...

如何使用CFileDialog

cfiledialog的語法 cfiledialog bool bopenfiledialog,lpctstr lpszdefext null,lpctstr lpszfilename null,dword dwflags ofn hidereadonly ofn overwriteprompt,l...