gpt4 book ai didi

c++ - Windows 消息异常

转载 作者:可可西里 更新时间:2023-11-01 09:41:45 25 4
gpt4 key购买 nike

可能只是某种粗略的疏忽,但我在消息循环中没有收到任何 WM_SIZE 消息。但是,我确实在 WndProc 中收到了它们。我认为 Windows 循环将消息发送给 WndProc?

LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch(message)
{
// this message is read when the window is closed
case WM_DESTROY:
{
// close the application entirely
PostQuitMessage(0);
return 0;
} break;
case WM_SIZE:
return 0;
break;
}
printf("wndproc - %i\n", message);
// Handle any messages the switch statement didn't
return DefWindowProc (hWnd, message, wParam, lParam);
}

... 现在是消息循环...

while(TRUE)
{
// Check to see if any messages are waiting in the queue
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{

// translate keystroke messages into the right format
TranslateMessage(&msg);
// send the message to the WindowProc function
DispatchMessage(&msg);

// check to see if it's time to quit
if(msg.message == WM_QUIT)
{
break;
}
if(msg.message == WM_SIZING)
{
printf("loop - resizing...\n");
}
}
else
{
//do other stuff
}
}

最佳答案

如果系统在 DefWindowProc 中或 Windows 消息队列中的其他地方将消息发送到您的窗口,那么您的消息循环根本不会看到该消息。

请注意,这仅适用于已发送的消息。发布的消息将显示在消息循环中。

如果您想过滤所有消息,请使用 SetWindowsHookEx 和您的线程 ID 以及适当的 Hook 类型。或者更好的是,在您的 WndProc 中正确处理它们。

关于c++ - Windows 消息异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4505861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com