win32问题,菜鸟啊!

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:44:15
为什么界面关了,进程没关?
代码如下:
case WM_DESTROY:
::PostQuitMessage(0);
break;
消息处理代码如是:
while(::GetMessage(&msg,hwnd,0,0)){
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
还有就是WM_DESTROY与WM_CLOSE有什么区别?

那是因为你GetMessage指定了hwnd,窗口被销毁掉后GetMessage就返回-1了,但while判断条件仍然成立,所以一直卡在while里面了
你可以改成
GetMessage(&msg,NULL,0,0)

while( (ret = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
return -1;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}