這個Win32消息循環內究竟發生了什麼?據我所知,TranslateMessage
正在將鍵碼轉換爲UTF字符碼併發送WM_CHAR
事件,但撥打PeekMessage
時會發生什麼情況?它濾除了某種類型的信息,只翻譯這些信息?這個Win32消息循環究竟發生了什麼?
// Application/Player message loop.
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while(msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// work happens here...
}
的PeekMessage(味精,NULL,0U,0U,PM_REMOVE)味精保存消息。這裏的NULL表示它需要窗口消息和線程消息。 OU和OU意味着它接收所有可用的消息並且不進行過濾。 PM_REMOVE表示它在處理後刪除消息。如果有消息,它會返回true。 –