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