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.


Anmelden zum Antworten