0
我有一个Windows 7的Visual Studio 2008 C++项目,我希望通知电源状态转换(例如暂停,休眠,恢复等)。我创建了一个消息窗口,用于查看WM_POWERBROADCAST
消息。一旦窗口被创建,我暂停PC。电源状态更改来自仅消息窗口的通知
例如(检查略去了错误):
const TCHAR class_name[] = _T("Power State Monitor");
WNDCLASSEX wc = { 0 };
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = PowerStateMonitor;
wc.lpszClassName = class_name;
::RegisterClassEx(&wc);
::CreateWindowEx(0, class_name, class_name, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, wc.hInstance, NULL);
::SetSuspendState(FALSE, FALSE, FALSE);
的WindowProc中看起来是这样的:
LRESULT CALLBACK PowerStateMonitor(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_POWERBROADCAST)
{
ATLTRACE(L"WM_POWERBROADCAST:\r\n");
return TRUE;
}
ATLTRACE(L"Default Handler: %#08x\r\n", uMsg);
return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
}
我希望看到WM_POWERBROADCAST:
记录,而是我看到的是典型的窗口创建消息:
Default Handler: WM_GETMINMAXINFO
Default Handler: WM_NCCREATE
Default Handler: WM_NCCALCSIZE
Default Handler: WM_CREATE
任何人都可以建议我可以改变我的窗口正确接收电源变更通知?