MFC OnTimer() 问题

2025-02-23 01:09:30
推荐回答(2个)
回答1:

OnTimer()其实是用来响应WM_TIMER消息的,其实OnTimer()就是一个回调函数,不过是系统默认的,当用户使用SetTimer()函数设定一个定时器的时候,只要是第三个参数为NULL,则系统就会调用默认的回调函数OnTimer()。

SetTimer(1,1000,NULL);

这一句就是设定一个定时器,每1000毫秒发送一次WM_TIMER消息,每次都会执行一个OnTimer()。

下面的代码演示了使用自定义的回调函数:

// 自定义回调函数
void CALLBACK TimerP(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime){
    cout<<"定时器执行"<}

int main(){
int iId = SetTimer(NULL,0,500,TimerP) ;
MSG msg ;
// 消息循环,从消息队列中获取消息,响应WM_TIMER消息。
while(GetMessage(&msg,NULL,0,0))
{
if(msg.message = WM_TIMER){
DispatchMessage(&msg) ;
}
}
KillTimer(NULL,iId) ;
return 0 ;
}

回答2:

回调函数是指专门用来执行OnTimer的函数,如果没有指定这个回调函数,那么由窗口响应WM_TIMER消息