【发布时间】:2013-01-28 21:16:01
【问题描述】:
我听说要在我的 C++ 应用程序中创建多个窗口,我需要做的就是尽可能多地创建 HWNDs,并为每个窗口使用 CreateWindowEx(),以及适当的窗口类等
我已经做到了,所以这不是问题。
现在,通常情况下,我会为我的应用程序制作这种消息循环:
MSG msg;
while(1)
{
while(PeekMessage(&msg, hWnd, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT)
break;
}
(应该没错吧?)
但是现在我有 3 个窗口,我的消息循环看起来像这样:
MSG msg;
while(1)
{
while(PeekMessage(&msg, hWnd, 0, 0, PM_REMOVE) || PeekMessage(&msg, hConWnd, 0, 0, PM_REMOVE) || PeekMessage(&msg, hStatWnd, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT)
break;
}
所以它会检查所有窗口的消息,对吗?
现在我的问题是,这是为多个窗口获取消息的正确方法吗?
另外,我听说对不同的窗口使用不同的WndProcs 不好,这是真的吗?如果是这样,为什么? (以及如何只使用一个,如果我想要每个窗口的行为有点不同?)
最后,我如何退出我的应用程序,以便在关闭其中一个窗口(任何窗口)时,所有窗口都将适当地关闭?
【问题讨论】: