在win32程序中调用DispatchMessage是必要的吗?

Win32程序通常具有循环调用GetMessagePeekMessage的消息循环,然后调用DispatchMessage将消息发送到相关窗口的窗口过程。

但是有没有需要真正做到这一点? 我可以直接在消息循环中直接查看MSG对象,并在不调用DispatchMessage的情况下执行所需的操作? 我在谈论的情况下,我有一个单一的窗口没有其他的窗口控件,例如,如果该窗口只用作direct3D显示窗口,所以消息将始终指向唯一的窗口。

大多数情况下,我只是好奇,但也可能导致我的代码的某些方面更清洁。

Solutions Collecting From Web of "在win32程序中调用DispatchMessage是必要的吗?"

您可以调用DispatchMessage将消息传递到适当的窗口,传递给它的“窗口过程”。 你认为你只有一个窗口,但它真的是唯一的一个? COM将创建助手窗口,其他子系统也可能创建助手隐藏窗口,谁将把消息发送到共享消息队列并发送到这些窗口。 无需考虑这些细节,您就可以派发API。 而你必须这样做,因为这些子系统依赖于消息泵的存在。

Spy++ Windows SDK工具可以帮助您查看您真正拥有多少个窗口。

如果你确实拥有唯一的窗口,那么你是否从DispatchMessage内部调用处理程序,或者直接通过消息泵调用,这并没有太大区别。