WM_POWERBROADCAST Nachricht nicht in MFC Dlg gefangen
-
22-08-2019 - |
Frage
Ich versuche WM_POWERBROADCAST Nachricht zu fangen, wenn das System in den Ruhezustand geht.
Ich mache wie:
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);
}
Es funktioniert einfach nicht. Inzwischen ist ein win32 app funktioniert gut. Ich versuchte, den Nachrichten-Handler in der Dlg Klasse vergeblich zu setzen.
Ich baue die App mit VS6.0. Wo bin ich falsch?
Lösung
In Ihrer Nachricht Karte
ON_MESSAGE( WM_POWERBROADCAST, OnPowerBroadcast )
Die Umsetzung
LRESULT CDialogDlg::OnPowerBroadcast(WPARAM wParam, LPARAM lParam)
{
switch (wParam)
{
case PBT_...
}
}
Seien Sie sicher, dass MSDN prüfen einige OS-spezifische Fälle um die wParam Werte.
Andere Tipps
Die Dokumentation dieser Nachricht speziell sagt :
Ein Fenster empfängt diese Nachricht durch seine WindowProc Funktion.
Haben Sie versucht, diese Methode auf dem Hauptfenster zu überschreiben?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow