2009-05-15 9 views
0

J'essaie d'afficher le message WM_POWERBROADCAST lorsque le système passe en mode veille.Message WM_POWERBROADCAST non détecté dans MFC Dlg

Je fais comme:

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); 
} 

Il ne fonctionne tout simplement pas. Pendant ce temps, une application Win32 fonctionne très bien. J'ai essayé de mettre le gestionnaire de message dans la classe Dlg en vain.

Je construis l'application avec VS6.0. Où ai-je tort?

Répondre

2

Dans votre carte de message

ON_MESSAGE(WM_POWERBROADCAST, OnPowerBroadcast) 

mise en œuvre

LRESULT CDialogDlg::OnPowerBroadcast(WPARAM wParam, LPARAM lParam) 
{ 
    switch (wParam) 
    { 
     case PBT_... 
    } 
} 

Assurez-vous de vérifier MSDN pour certains cas spécifiques à l'OS autour des valeurs de wParam.

0

La documentation de ce message spécifiquement says:

Une fenêtre reçoit ce message grâce à sa fonction WindowProc.

Avez-vous essayé d'écraser cette méthode sur votre fenêtre principale?

Questions connexes