什麼時候我們需要用到settimer函式呢?當你需要每個一段時間執行一件事的的時候就需要使用settimer函式了。 使用定時器的方法比較簡單,通常告訴windows乙個時間間隔,然後windows以此時間間隔週期性觸發程式。通常有兩種方法來實現:傳送wm_timer訊息和呼叫應用程式定義的**函式。
1.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);
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函式了。 使用定時器的方法比較簡單,通常告訴windows乙個時間間隔,然後windows以此時間間隔週期性觸發程式。通常有兩種方法來實現:傳送wm_timer訊息和呼叫應用程式定義的**函式。
1.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);
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) }
VC定時器的用法 SetTimer和Ontimer
settimer是設定乙個計時器並開始執行計時器ontimer中的 ontimer是計時器所執行的 killtimer用於停止計時器。settimer是設定,ontimer是響應settimer訊息的。settimer函式的用法 1 用wm timer來設定定時器 先請看settimer這個api函...
VC定時器的用法 SetTimer和Ontimer
settimer是設定乙個計時器並開始執行計時器ontimer中的 ontimer是計時器所執行的 killtimer用於停止計時器。settimer是設定,ontimer是響應settimer訊息的。settimer函式的用法 1 用wm timer來設定定時器 先請看settimer這個api函...
C 定時器的用法
關於c 中timer類 在c 裡關於定時器類就有3個 1.定義在system.windows.forms裡 2.定義在system.threading.timer類裡 3.定義在system.timers.timer類裡 1.using system using system.collections...