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?

¿Fue útil?

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
scroll top