我对win32编程中的消息循环如何工作有点困惑。在我的 WinMain
我总是提出以下内容:
while ( GetMessage ( &msg, NULL, 0, 0 ) > 0 )
{
TranslateMessage ( &msg );
DispatchMessage ( &msg );
}
这是一个while循环,几乎运行直到你的应用程序停止。这是否意味着每个应用程序而不是每个窗口都有一个消息循环?
我对win32编程中的消息循环如何工作有点困惑。在我的 WinMain
我总是提出以下内容:
while ( GetMessage ( &msg, NULL, 0, 0 ) > 0 )
{
TranslateMessage ( &msg );
DispatchMessage ( &msg );
}
这是一个while循环,几乎运行直到你的应用程序停止。这是否意味着每个应用程序而不是每个窗口都有一个消息循环?
从 关于消息和消息队列:
具有多个线程的应用程序可以在每个创建窗口的线程中包含消息循环。
请注意,消息队列CAN支持多个窗口...第二个参数 GetMessage
是您要观看消息的窗口的句柄。如果 NULL
那么线程的所有窗口。
作为第二个注释,可以创建一个没有窗口的消息队列(至少从Windows 2000开始)。它在文档中描述 PostThreadMessage
:
在邮件将发布到的帖子中,请致电
PeekMessage
如此处所示强制系统创建消息队列。
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE)