CEdit Event Handler für Enter
-
Hi,
wie lasse ich eine Textfeld auf einen Tastendruck reagieren?
Vielleicht ist meine Frage ein bisschen unklar.Ich möchte, dass der Benutzer die Eingabe in ein Textfeld mit Enter bestätigen kann und danach ein Teil des Codes ausgeführt wird.
Wie fange ich die "Enter" am Textfeld ab? Mit ON_CHANGE?
Edit: Ich hab nun eine Lösung gefunden. Mit Hilfe von PreTranslateMessage lässt sich das ganze prüfen.
Gruß, Taz
-
Das ist komplexer als man denkt.
Wenn Du einen Dialog hast, dann wird die Eingabetaste von Dialog-Handler in PreTranslateMessage behandelt und erreicht niemals das Control selbst.
Ansonsten erreichen Tastatureingaben ein Control über WM_KEYDOWN/WM_CHAR.
Allerdings musst Du zu der Behndlung solcher Nachrichten das Edit-Control subclassen.
-
Hier wie ich es gelöst habe:
In der PropertyPage.
BOOL CTab1::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN && pMsg->wParam==VK_RETURN && GetFocus() == ETab1Search.GetFocus()) { OnBnClickedButton1(); } return CDialog::PreTranslateMessage(pMsg); }
Funktioniert super!
Gruß