PreTranslateMessage
-
Hallo zusammen,
ich versuche mittels PreTanslateMessage eine Taste abzufangen und anschließend einen Dialog aufzurufen.
Leider erzeugt der Debuger eine Fehlermeldung. Ich kann irgendwie den Fehler nicht finden.
Vielleicht könntet Ihr mir bitte auf die Sprunge helfen.

Hier ist der Code:
BOOL CProbeDlg::PreTranslateMessage(MSG *pMsg ) { if (pMsg->wParam == VK_DELETE) { Ctest dlg; dlg.DoModal(); AfxMessageBox("Funkt doch"); } return CDialog::PreTranslateMessage( pMsg ); }Danke schon mal im voraus!
-
Welche Fehler erzeugt der Debugger
-
versuch mal das ohne dein Ctest nur mit der MessageBox aufzurufen ob das geht...
sieht erstmal an sonsten so richtig aus... ich würde den fehler in deinem Ctest Objekt vermuten...
-
Guten Morgen!
Die Fehlermeldung ist eine ganznormale "Debug Assertion Failed". Es wird also ein ASSERT abgefangen.
Das ASSERT wird hier abgefangen:
return CDialog::PreTranslateMessage( pMsg );Bis dahin läuft der Dialog sowie die MessageBox ohne Probs.
Das mit der MessageBox habe ich auch schon versucht und ohne den Dialog aufruf klappt es.
Aber an dem Dialog selbst kann es auch nicht liegen, weil auch ein Dialog ohne Code diese Fehlermeldung erzeugt.
-
Du solltest erst prüfen, ob die Nachricht WM_KEYDOWN ist.
Danach erst guckn, ob "ENTF" gedrückt wurde.
Der eigentliche Fehler sollte aber verschwinden, wenn Du ein return true benutzt, nachdem Du die Message verarbeitet hast:if( pMsg->message == WM_KEYDOWN ) { switch( pMsg->wParam ) { case VK_DELETE: // hier Dein Code return true; } }
-
Danke für den tip!
Nun funktionierts wieder.