VC中定時(shí)器的使用
Settimer是設(shè)置一個(gè)計(jì)時(shí)器,當(dāng)執(zhí)行的時(shí)候,則開始執(zhí)行計(jì)時(shí)器Ontimer中的代碼,Ontimer是計(jì)時(shí)器所執(zhí)行的代碼。
Settimer是設(shè)置,Ontimer是響應(yīng)Settimer消息的。
KillTimer用于停止計(jì)時(shí)器。
1.SetTimer函數(shù)的用法
1)用WM_TIMER來設(shè)置定時(shí)器
先請(qǐng)看SetTimer這個(gè)API函數(shù)的原型:
UINT_PTR SetTimer(
HWND hWnd,//和定時(shí)器相關(guān)聯(lián)的窗口
UINT_PTR nIDEvent,//一個(gè)非0的數(shù)字標(biāo)志這個(gè)定時(shí)器
UINT uElapse,//指定時(shí)間間隔,以毫秒為單位
TIMERPROC lpTimerFunc//一般指定為null
);
當(dāng)在MFC的工程中表述如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent,//一個(gè)非0的數(shù)字標(biāo)志這個(gè)定時(shí)器
UINT uElapse,//指定時(shí)間間隔,以毫秒為單位
TIMERPROC lpTimerFunc//一般指定為null
);
2)用法舉例:
SetTimer(1,1000,NULL);
參數(shù)解釋:
1:計(jì)時(shí)器的名稱;
1000:時(shí)間間隔,單位是毫秒;
NULL:使用onTime函數(shù)。
在每次時(shí)間到1s時(shí)會(huì)觸發(fā)WM_TIMER消息,其消息響應(yīng)函數(shù)如下:
void CXXX::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
// 此處加入如下代碼就好了:
switch()
{
case 1:
//做該做的事情
//當(dāng)不需要的時(shí)候在此處調(diào)用KillTimer(1);
break;
default:
break;
}
CDialog::OnTimer(nIDEvent);
}
3)當(dāng)不需要計(jì)時(shí)器的時(shí)候調(diào)用KillTimer(nIDEvent);
例如:KillTimer(1);
2.如果我要加入兩個(gè)或者兩個(gè)以上的 timer怎么辦?
繼續(xù)用SetTimer函數(shù)唄,上次的timer的ID是1,這次可以是2,3,4。。。。
SetTimer(2,1000,NULL);
SetTimer(3,500,NULL);
嗯,WINDOWS會(huì)協(xié)調(diào)他們的。當(dāng)然onTimer函數(shù)體也要發(fā)生變化,要在函數(shù)體內(nèi)添加每一個(gè)timer的處理代碼:
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}
注腳:如果上述內(nèi)容幫到了您或者有什么錯(cuò)誤,而您又是注冊(cè)用戶的話,請(qǐng)不要吝惜自己的鼠標(biāo)和鍵盤,或者留言指出,感謝支持!
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。