Winapi 窗口移动和调整大小会干扰MsgWaitForMultipleObjects

Winapi 窗口移动和调整大小会干扰MsgWaitForMultipleObjects,winapi,event-handling,message-loop,Winapi,Event Handling,Message Loop,我有一个应用程序,它使用MsgWaitForMultipleObjects循环消息,以捕获额外的事件,同时泵送ui消息。似乎只要移动或调整窗口大小,DefWindowProc就会开始自己的消息循环,直到释放鼠标。这种情况会阻止外部循环同时捕获额外的消息 正因为如此,我不想让应用程序多线程运行。是否有其他方法可以解决此问题?Windows API中还有几个地方将进入它们自己的消息循环。如果您需要在这些时间继续处理消息,则需要一个单独的线程。MsgWaitForMultipleObjects在传统多

我有一个应用程序,它使用MsgWaitForMultipleObjects循环消息,以捕获额外的事件,同时泵送ui消息。似乎只要移动或调整窗口大小,DefWindowProc就会开始自己的消息循环,直到释放鼠标。这种情况会阻止外部循环同时捕获额外的消息


正因为如此,我不想让应用程序多线程运行。是否有其他方法可以解决此问题?

Windows API中还有几个地方将进入它们自己的消息循环。如果您需要在这些时间继续处理消息,则需要一个单独的线程。

MsgWaitForMultipleObjects在传统多线程程序中很少使用。它在游戏中有一些用途——在游戏中,传统的非客户端框架元素被省略,而MessageBox和DoDragDrop等API则被避免

通常,它在UI工作线程中得到最佳使用,这些线程不承载可见窗口,但将消息队列用作线程间消息传递系统,并且还需要等待内核句柄

在您的情况下,创建第二个线程似乎是不可避免的。讽刺的是,PostThreadMessage+MsgWaitForMultipleObjects可能是在GUI线程和ui工作线程之间建立可靠通信机制的最简单方法