KeyPress-Ereignis für einen Dialog abfangen
-
Hallo zusammen,
ich habe mir ein Dialog-Fenster als Resource erzeugt und verwende die über CreateDialog.
Jetzt kann ich in der Dialog-Proc ja Nachrichten wie das Drücken einen Knopfs oder so bearbeiten lassen indem ich WM_Command abfange und dann den Parameter wParam auswerte.
Meine Frage:
Wie kann ich Ereignisse wie das KeyPress-Ereignis eines Textfeldes auffangen?? Soweit ich gesehen habe wird wenn ich z.B. Enter drücke gar keine Nachricht erzeugt.Ich will nämlich eigentlich nur ein Textfeld haben, in dem ich Enter drücken kann um eine Aktion auszuführen, um nicht immer die Maus in die Hand nehmen zu müssen und auf den Knopf klicken.
Vielen Dank!
Matthias
-
Mit WM_KEYDOWN
-
Naja, so ein Newb bin ich jetzt auch nicht

Das ging natürlich nicht.
Trotzdem danke für die Antwort.
-
Bevor wir weiter Rätselraten spielen, sag uns doch, was du schon prbiert hast und vorallem wie.
-
EDIT: Hast du es auch schon mit subclassen versucht?
-
Probier mal VK_RETURN.
switch(message) { case WM_INITDIALOG: SetFocus(GetDlgItem(hwnd,1)); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK:; EndDialog(hwnd,0); return TRUE; case VK_RETURN: ......... return TRUE; } break; case WM_DESTROY: ..... return 0; } return FALSE; }
-
Also wenn du WM_KEYDOWN-Messages von deinem Dialog-Fenster bekommen willst, muss du lediglich einen WM_KEYDOWN-Message-Handler einbauen. Falls du aber die Eingaben von Editbox-Controls direkt erhalten willst, musst du Subclassen.

-
LRESULT CALLBACK EditWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_KEYDOWN: switch(wParam) { case VK_RETURN: Enter(); break; } } return CallWindowProc ((WNDPROC) PrevWndProcEdit, hwnd, message, wParam, lParam); }So koennte dann das aussehen
@ Codefinder : gibt es was was du nicht weisst ?

-
fehlersucher schrieb:
Wie kann ich Ereignisse wie das KeyPress-Ereignis eines Textfeldes auffangen?? Soweit ich gesehen habe wird wenn ich z.B. Enter drücke gar keine Nachricht erzeugt.
Du musst das WM_KEYDOWN deines Textfeldes abfangen, dass kann man mit SubClassing realisieren. Hier mal en kleines Schnipsel: http://www.winapi.net/index.php?inhalt=s27
-
@PhoeNix_FasT: *geschmeichelt fühl* ... bestimmt gibt es das^^
@tobZel: LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL, ...Doppelt gemoppelt hält besser wa =?
Gut kopiert! 