什麼時候我們需要用到
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)
}
SetTimer函式的使用
settimer函式的用法 1 用wm timer來設定定時器 先請看settimer這個api函式的原型 uint ptr settimer hwnd hwnd,視窗控制代碼 uint ptr nidevent,定時器id,多個定時器時,可以通過該id判斷是哪個定時器 uint uelapse,時...
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...