gpt4 book ai didi

winapi - 为什么 GetMessage 不处理 WM_POWERBROADCAST 消息?

转载 作者:行者123 更新时间:2023-12-02 04:43:27 26 4
gpt4 key购买 nike

我正在创建一个用于处理消息的隐藏窗口。我遇到在 GetMessage 循环中没有收到 WM_POWERBROADCAST 消息的情况。但是,我确实通过我的 WNDPROC 接收了它。我已确认我确实在这两个位置收到了其他消息。

为什么 GetMessage 收不到 WM_POWERBROADCAST?

WNDCLASSEX classInfo = {0};
classInfo.cbSize = sizeof(classInfo);
classInfo.style = WS_DISABLED;
// CustomWndProc just outputs the message and chains to DefaultWndProc
classInfo.lpfnWndProc = CustomWndProc;
classInfo.hInstance = GetModuleHandle(NULL);
classInfo.hCursor = NULL;
classInfo.hbrBackground = NULL;
classInfo.lpszMenuName = NULL;
classInfo.lpszClassName = L"MyMessageWindow";
ATOM windowClass = RegisterClassEx(&classInfo);

HWND messageWindow = CreateWindowEx(WS_EX_NOACTIVATE, L"MyMessageWindow",
L"Message Handling Window", WS_DISABLED, 0, 0, 0, 0, 0, NULL,
GetModuleHandle(NULL), NULL);

MSG message;
while (GetMessage(&message, NULL, 0, 0))
{
// This condition is never true.
if (message.message == WM_POWERBROADCAST)
std::cout << "Got WM_POWERBROADCAST" << std::endl;
}

最佳答案

那是因为 WM_POWERBROADCAST 是同步调度的,因此没有放在消息队列中。

为了处理它,您需要在窗口过程中处理它。

关于winapi - 为什么 GetMessage 不处理 WM_POWERBROADCAST 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339124/

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