C++ 定時器的用法:SetTimer和Ontimer
阿新 • • 發佈:2019-01-04
SetTimer函式的用法
1)用WM_TIMER來設定定時器
先請看SetTimer這個API函式的原型
UINT_PTR SetTimer(
HWND hWnd,//和定時器相關聯的視窗
UINT_PTR nIDEvent,//一個非0的數字標誌這個定時器
UINT uElapse,//指定時間間隔,以毫秒為單位
TIMERPROC lpTimerFunc//一般指定為null
);
當在MFC的工程中如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent,//一個非0的數字標誌這個定時器
UINT uElapse,//指定時間間隔,以毫秒為單位
TIMERPROC lpTimerFunc//一般指定為null
);
用法如下:
SetTimer(1,1000,NULL);
引數:
1:計時器的名稱;
1000:時間間隔,單位是毫秒;
NULL:使用onTime函式。
在每次時間到1s時會觸發WM_TIMER訊息,其訊息響應函式如下:
void CXXX::OnTimer(UINT_PTR nIDEvent) {
// TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值
// 此處加入如下程式碼就好了:
switch(){
case 1:
//做該做的事情
//當不需要的時候在此處呼叫KillTimer(1);
break;
default:
break;
}
CDialog::OnTimer(nIDEvent);
}
當不需要計時器的時候呼叫KillTimer(nIDEvent);
KillTimer(1);
2)如果我要加入兩個或者兩個以上的 timer怎麼辦?
繼續用SetTimer函式吧,上次的timer的ID是1,這次可以是2,3,4。。。。
SetTimer(2,1000,NULL);SetTimer(3,500,NULL);
嗯,WINDOWS會協調他們的。當然onTimer函式體也要發生變化,要在函式體內新增每一個timer的處理程式碼:
onTimer(nIDEvent){
switch(nIDEvent){
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}