wenn man Enter drückt schließt sich das Programm



  • Hallo!
    Ich habe das Problem, dass sich mein Dialogfeldbasiertes Programm immer schließt wenn man Enter drückt. Ich habe schon die Tabulatorreihenfolge geändert, aber wenn man den focus wieder von einem button nimmt und dann Enter drückt, schließt sich das Programm wieder.
    Was kann ich dagegen machen?
    Danke schonmal, Misc



  • Um zu verhindern, das sich der Dialog bei drücken der Entertaste schließt,
    musst Du die Taste Enter, in der PreTranslateMessage abfangen.

    Turmfalke64



  • und wie mache ich das?



  • in der Header-Datei

    virtual BOOL PreTranslateMessage(MSG* pMsg);
    

    im Programmcode

    BOOL CMeinDialog::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message == WM_KEYDOWN)
        {
    	     // Enter-Taste abfangen.
    	     if(pMsg->wParam == VK_RETURN)
    	     {
    	         return 0;
    	     }
        }
        return CDialog::PreTranslateMessage(pMsg);
    }
    

    Turmfalke64



  • saucool, funzt 🙂
    danke



  • Wenn du den Standard-OK-Button nicht brauchst, kannst du auch einfach die OnOK überschreiben und als Leer-Implementierung lassen.
    Dasselbe "Problem" hast du auch mit der Esc-Taste, dort wäre es dann OnCancel.



  • is egal, das passt schon so 🙂



  • ich pack fuer solche faelle immer direkt
    afx_msg void OnOk() {}
    afx_msg void OnCancel() {}
    in die entsprechende klasse - schon hat man keine sorgen mehr und braucht nicht aufwendig das enter oder ESC filtern


Log in to reply