|
|
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0))
return msg.wParam;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(m_bActive)
{
UpdateFrame();
}
else
{
WaitMessage();
}
}
}
在这段代码中,既然有了PeekMessage何必又要GetMessage呢?是不是PeekMessage设置PM_NOREMOVE,没有删除消息,要用GetMessage把它删除掉啊!
我还见过一段代码PeekMessage(&msg,m_hwnd,0,0,PM_NOREMOVE),用这样的代码,当点关闭窗口的按钮时,cpu立马涨到100%,从msdn的解释来讲,窗口关闭,进程暂时未退,PeekMessage找不到m_hwnd所以死循环了?
但是既然这第二个参数可以设置窗口句柄,那么我若设置了m_hwnd时,怎末才能正常退出啊!
|
|