Dialog beendet sich bei VK_RETURN



  • Hallo,

    hab in meiner Anwenund eine PreTranslateMessage hinzugefügt, wo ich auf VK_RETURN abfrage.

    Wenn der gesendet wird, sollen alle Möglichen sachen passieren. Problem bei der Sache ist: Er führt das zwar alles wunderbar aus, aber am ende schließt er auch das Dialogfeld. Und das darf unter keinen Umständen sein. Wie kann ich das unterdrücken?

    Hier die PreTranslateMessage:

    BOOL CKlasse::PreTranslateMessage(MSG* pMsg)
    {
    	// TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf.
    
    	if ( pMsg->message == WM_KEYDOWN )
    	{
    		switch ( pMsg->wParam )
    		{
    		case VK_RETURN:
    			{
    				Methode1();
                                        Methode2();
    				break;
    			}
    		}
    	}
    
    	return CDialog::PreTranslateMessage(pMsg);
    }
    

    Hier die Dialogeigenschaften:

    Klassentyp:CDialog
    Anwendungsfenster:TRUE
    Rahmen:Dialogfeldrahmen
    Stil:Überlappend
    Rest=Default

    Dialogfeld wird über DoModal() aufgerufen

    IDE: Visual C++ 2003



  • ah, alles klar

    hab es hinbekommen

    hab anstatt das break --> return FALSE gemacht

    funzt wunderbar



  • Für Return wird im normalfall OnOK() überladen.
    Bei ESC die OnCancel(). Wenn Du dann den Aufruf der Basisklasse (CDialog) weglässt wird der Dlg auch nicht Beendet.

    Gruß



  • Ich bin mir jetzt nicht zu 100% sicher, aber es sollte auch schon ausreichen, wenn Du keinen DefPushButton auf dem Dialog hast, dann wird bei Return der Dialog auch nicht geschlossen.

    Gruß André



  • av_privat schrieb:

    Ich bin mir jetzt nicht zu 100% sicher, aber es sollte auch schon ausreichen, wenn Du keinen DefPushButton auf dem Dialog hast, dann wird bei Return der Dialog auch nicht geschlossen.

    Gruß André

    Afair kannst du ALLE Buttons aus einem Dialog rauslöschen und trotzdem macht ihn Enter zu. 😉


Anmelden zum Antworten