WM_POWERBROADCAST mensaje no se detecta en MFC Dlg
-
22-08-2019 - |
Pregunta
Trato de coger WM_POWERBROADCAST mensaje cuando el sistema entra en modo de suspensión.
que estoy haciendo como:
BOOL CPowManApp::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_POWERBROADCAST || pMsg->message == WM_POWER)
{
CString strMessage;
strMessage.Format(_T("%d WM_POWERB%s wParam %x lParam %x"),
pMsg->time,
pMsg->message == WM_POWER?_T(""):_T("BRAODCAST"),
pMsg->wParam,
pMsg->lParam);
OutputDebugString(strMessage);
}
return CWinApp::PreTranslateMessage(pMsg);
}
Simplemente no funciona. Mientras tanto, una aplicación Win32 funciona bien. Traté de poner el controlador de mensajes en la clase Dlg en vano.
Estoy construyendo la aplicación con VS6.0. Dónde estoy mal?
Solución
En el mapa de mensajes
ON_MESSAGE( WM_POWERBROADCAST, OnPowerBroadcast )
Implementación
LRESULT CDialogDlg::OnPowerBroadcast(WPARAM wParam, LPARAM lParam)
{
switch (wParam)
{
case PBT_...
}
}
Asegúrese de revisar de MSDN para algunos casos específicos de OS en torno a los valores de wParam.
Otros consejos
La documentación de este mensaje específicamente dice :
Una ventana recibe este mensaje a través de su función WindowProc.
¿Ha intentado sobrescribir este método en su ventana principal?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow