SetTimer函式的使用

2021-04-18 04:13:32 字數 1446 閱讀 4144

settimer函式的用法

1 )用wm_timer來設定定時器

先請看settimer這個api函式的原型

uint_ptr settimer(

hwnd hwnd, // 視窗控制代碼

uint_ptr nidevent, // 定時器id,多個定時器時,可以通過該id判斷是哪個定時器

uint uelapse, // 時間間隔,單位為毫秒

timerproc lptimerfunc // **函式

); 例如

settimer(m_hwnd,1,1000,null); //乙個1秒觸發一次的定時器

在mfc程式中settimer被封裝在cwnd類中,呼叫就不用指定視窗控制代碼了

於是settimer函式的原型變為:

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

當使用settimer函式的時候,就會生成乙個計時器。函式中nidevent指的是計時器的標識,也就是名字。nelapse指的是時間間隔,

也就是每隔多長時間觸發一次事件。第三個引數是乙個**函式,在這個函式裡,放入你想要做的事情的**,你可以將它設定為null,

也就是使用系統預設的**函式,系統預設認的是ontime函式。這個函式怎麼生成的呢?你需要在需要計時器的類的生成ontime函式:

在classwizard裡,選擇需要計時器的類,新增wm_time訊息對映,就自動生成ontime函式了。然後在函式裡新增**,讓**實現功能。

每隔一段時間就會自動執行一次。

例: settimer(1,1000,null);

1:計時器的名稱;

1000:時間間隔,單位是毫秒;

null:使用ontime函式。

當不需要計時器的時候呼叫killtimer(nidevent);

例如:killtimer(1);

2) 呼叫**函式

此方法首先寫乙個如下格式的**函式

void callback timerproc(hwnd hwnd,uint nmsg,uint ntimerid,dword dwtime);

然後再用settimer(1,100,timerproc)函式來建乙個定時器,第三個引數就是**函式位址。

二. 或許你會問,如果我要加入兩個或者兩個以上的 timer怎麼辦?

繼續用settimer函式吧,上次的timer的id是1,這次可以是2,3,4。。。。

settimer(2,1000,null);

settimer(3,500,null);

嗯,windows會協調他們的。當然ontimer函式體也要發生變化,要在函式體內新增每乙個timer的處理**:

ontimer(nidevent) }

SetTimer函式的使用

什麼時候我們需要用到 settimer 函式呢?當你需要每個一段時間執行一件事的的時候就需要使用 settimer 函式了。使用定時器的方法比較簡單,通常告訴 windows 乙個時間間隔,然後 windows 以此時間間隔週期性觸發程式。通常有兩種方法來實現 傳送 wm timer 訊息和呼叫應用...

SetTimer函式使用注意

該函式的原型宣告如下 uint ptr settimer hwnd hwnd,uint ptr nidevent,uint uelapse,timerproc lptimerfunc 第乙個引數hwnd 與該定時器關聯的視窗控制代碼。第二個引數nidevent 非0的定時器標示符。這兩個引數的關聯關...

有關SetTimer函式的用法

1 用wm timer來設定定時器 先請看settimer這個api函式的原型 uint ptr settimer hwnd hwnd,視窗控制代碼 uint ptr nidevent,定時器id,多個定時器時,可以通過該id判斷是哪個定時器 uint uelapse,時間間隔,單位為毫秒 time...