У меня есть проект Visual Studio 2008 C ++ для Windows 7, в котором я хотел бы получать уведомления о переходах состояния питания (например, приостановка, спящий режим, возобновление и т. Д.).Я создал окно только для сообщений, которое отслеживает сообщения WM_POWERBROADCAST
.После того, как окно создано, я приостанавливаю ПК.
Например (проверка ошибок для краткости опущена):
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
Кто-нибудь может подсказать, что я могу изменить, чтобы мое окно правильно получало уведомления об изменении питания?