MFC SetTimer函数的用法
<span style="color:#ff0000;">OnTimer()函數是響應用SetTimer()函數設定的時鐘發送的時鐘消息的,你沒設定時鐘,就不會有時鐘消息,OnTimer()里的語句當然也不會被調用。</span>
Settimer是設置一個計時器并開始執行計時器Ontimer中的代碼,Ontimer是計時器所執行的代碼。KillTimer用于停止計時器。 Settimer是設置,Ontimer是響應Settimer消息的。
一????SetTimer函數的用法?
1)??函數原型及變形
SetTimer這個API函數的原型?:
UINT_PTR SetTimer(?
HWND hWnd, //?窗口句柄?
UINT_PTR nIDEvent, //?定時器ID,多個定時器時,可以通過該ID判斷是哪個定時器?
UINT uElapse, //?時間間隔,單位為毫秒?
TIMERPROC lpTimerFunc //?回調函數?
);
注意:設置第二個參數時要注意,如果設置的等待時間比處理時間短,程序就會出問題了。
回調函數:在這個函數里,放入你想要做的事情的代碼,你可以將它設定為NULL,?也就是使用系統默認的回調函數,系統默認認的是onTime函數。
例如?:
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(1,1000,NULL);
用法如下:SetTimer(1,1000,NULL);1:計時器的名稱;1000:時間間隔,單位是毫秒;NULL:使用onTime函數
2)函數生成方法
在ClassWizard里,選擇需要計時器的類,添加WM_TIME消息映射,就自動生成onTime函數了。然后在函數里添加代碼,讓代碼實現功能。?
每隔一段時間就會自動執行一次。
在每次時間到1s時會觸發WM_TIMER消息,其消息響應函數如下: void CXXX::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息處理程序代碼和/或調用默認值 // 此處加入如下代碼就好了: switch() { case 1: //做該做的事情 //當不需要的時候在此處調用KillTimer(1); break; default: break; } CDialog::OnTimer(nIDEvent); }
3)?回調函數的格式
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);?
二.?多個Timer
把ID的值設為〉1的數,如:SetTimer(3,500,NULL);
由WINDOWS會協調他們的然onTimer函數要在函數體內添加每一個timer的處理代碼:?
三、KillTimer:取消定時器不再使用定時器后,我們應該調用KillTimer來取消定時。
???????KillTimer的原型:
??????????????BOOL KillTimer(HWND hWnd,????????? //?窗口句柄
?????????????????????UINT_PTR uIDEvent?? // ID);
???????在MFC程序中我們可以直接調用KillTimer(int nIDEvent)來取消定時器
總結
以上是生活随笔為你收集整理的MFC SetTimer函数的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: steam加速_PC电脑steam有没有
- 下一篇: 中值滤波算法