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...