MFC中有关WM_CREATE消息

来源:互联网 发布:squid nginx 比较 编辑:程序博客网 时间:2024/06/10 21:10
我只知道在创建完一个窗口后,显示窗口前要调用OnCreate函数,由于Windows应用程序是一种消息处理机制,当创建完一个窗口后,Windows应用程序就处于等待消息的状态,如果我在OnCreate函数中定义一个计时器,SetTimer(1,1,NULL),也就是每一豪秒发送一个OnTimer函数,可这种情况只有在OnCreate函数一直被调用,并且调用的很频繁,每一毫秒就发送WM_CREATE(这里的一毫秒是SetTimer中的一毫秒,一秒也是一样),然后调用SetTimer。这就是我不理解WM_CREATE消息的地方,难道是一个应用程序在创建后就一直以很快的速度发送WM_CREATE消息?请帮我解说下怎么才发送WM_CREATE消息,谢谢!
 
你理解错啦,WM_CREATE 顾名思意就是创建窗口,你一毫秒创建一个窗口怎么了得。 Timer被设置后会一直存在,直到用 KillTimer 删除。 Timer被创建后,每隔一定时间会发送 WM_TIMER 消息,只要加个WM_TIMER 消息处理函数就可以了,当收到WM_TIMER 消息后,程序就会调用函数。 当然,你也可以在创建Timer时指定回调函数。 SetTimer 原形如下,注意 CWnd 类的 SetTimer 方法没有第一个参数: UINT_PTR SetTimer( HWND hWnd, // handle to window UINT_PTR nIDEvent, // timer identifier UINT uElapse, // time-out value TIMERPROC lpTimerFunc // timer procedure ); 四个参数分别是: hWnd 所属的窗口句柄,如果 lpTimerFunc 为空,这个窗口将接收 WM_TIMER 消息。 nIDEvent Timer的ID值,发送 WM_TIMER消息时会附带发送这个值。 uElapse 超时时间。 lpTimerFunc 回函数,如果为空,将发送 WM_TIMER 消息给 hWnd 指定的窗口的消息队列。lpTimerFunc 的函数原型如下: VOID CALLBACK TimerProc( HWND hwnd, // handle to window UINT uMsg, // WM_TIMER message UINT_PTR idEvent, // timer identifier DWORD dwTime // current system time );
 
原创粉丝点击