GetMessage() hwnd不为NULL

今天学习MFC。写了一个

while(GetMessage(&msg,hwnd,0,0))

{

 TranslateMessage(&msg);

DispatchMessage(&msg);

}

本来这样的写法就是不对的 MSND中明确指出,要避免这样的写法,因为GetMessage有可能返回-1;

这里hwnd是创建的窗口的句柄,这里表示获取属于hwnd的信息。

当我点击叉叉关闭窗口后,该进程居然还在。我的CPU使用率达到60%.

这是为什么??

点击XX按钮以后,响应一个WM_DESTOY消息,销毁窗口,hwnd不存在了。WM_DESTROY调用PostQuitMessage(0),向窗口发送一个WM_QUIT消息,本来是准备让GetMessage返回0,结束循环的,由于参数填了hwnd但是此时hwnd已经不存在了,所以GetMessage返回-1,陷入死循环,导致CPU上升。应该是这样的吧,我猜的。这里把hwnd换为null就行了。

 

posted @ 2012-10-29 20:57  IamHuskar  阅读(296)  评论(0编辑  收藏  举报