之间有什么区别
case WM_DESTROY:
PostQuitMessage(WM_QUIT);
break;
和
case WM_DESTROY:
PostQuitMessage(0);
break;
答案 0 :(得分:9)
当您致电PostQuitMessage
时,您会传递退出代码,而不是消息ID。 PostQuitMessage
会依次为您生成(并发布)WM_QUIT
消息。
从技术上讲,区别在于PostQuitMessage(WM_QUIT)
,退出代码为0x0012
(十进制为18)。而PostQuitMessage(0)
将提供退出代码0
。
当GetMessage
和PeekMessage
看到WM_QUIT
消息时,它们将返回零,您可以检查WPARAM
LPMSG
部分中的退出代码1}}参数。
要返回退出代码(传递给PostQuitMessage的值),应用程序的消息泵可能是这样的:
MSG msg;
while (0 != GetMessage(&msg, 0, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
答案 1 :(得分:1)
我们可以找到代码,消息循环在-1的“错误”上停止 GetMessage函数()。因此,如果在这种情况下应用程序突然消失,没有震惊的用户 会发现原因是什么。更好的方法是让应用程序保持运行。 而且“坏”消息也不会损坏DefWindowProc()函数。