这个 Win32 消息循环内部到底发生了什么?我知道这TranslateMessage
是将键码转换为 UTF 字符码并发送WM_CHAR
事件,但是到底PeekMessage
要做什么呢?它是否过滤掉某种类型的消息并只翻译那些消息?
// 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...
}