Problem mit PreTranslateMessage
-
Hallo,
ich möchte in einer CFormView-basierten MDI-Applikation das Drücken der Return- und der Esc-Taste abfangen.
Hierzu habe ich dies in der PreTranslateMessage-Funktion wie folgt abgefangen:BOOL CPreTranslateMessageTextView::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYUP){ UINT nKeyCode = pMsg->wParam; // virtual key code of the key pressed if(nKeyCode == VK_CANCEL){ Test(); return FALSE; } if(nKeyCode == VK_RETURN){ Test(); return FALSE; } } return CFormView::PreTranslateMessage(pMsg); } void CPreTranslateMessageTextView::Test() { CTestDialog Dia; Dia.DoModal(); }
Wenn ich in der Test()-Funktion eine Message-Box aufrufe, erhalte ich keine Probleme.
Rufe ich dagegen wie hier einen Dialog per DoModal() auf, dann stürzt mir das Programm nach Beenden des Dialog (OK-Knopf) ab.
Der Dialog wurde testweise lediglich als leere Klasse mit den Standard-Knöpfen (OK, Abbrechen) erstellt, es pasiert dort eigentlich nichts.Muss ich in der PreTranslateMessage der CFormView-Klasse noch irgendetwas mit den Nachrichten machen, nachdem ich meine Funktion Test() aufgerufen habe oder reicht es, wenn ich wie hier FALSE zurückgebe?
Danke für Hinweise,
Andreas
-
OK,
Problem teilweise gelöst:
Ich sollte mir die MSDN wohl genauer durchlesen...
Der Rückgabewert in PreTranslateMessage muss natürlich TRUE sein.