"Hilfstastatur" via Dialog -> WM_CHAR bearbeiten
-
Hallo zusammen
Ich habe eine rein dialogbasierte Anwendung(soll eine Art "Software-Tastatur" sein), d.h. ohne Fensterklasse usw.
WinMain beschränkt sich darauf, das Ergebnis von DialogBox() zurückzugeben, klappt auch soweit.Allerdings möchte ich gerne WM_CHAR-Nachrichten in meiner DlgProc() bearbeiten, um die entsprechende Taste (per SendDlgItemMessage()) zu "drücken". Es scheint allerdings so, als würde mein Dialog keine WM_CHAR-Nachrichten erhalten. Ich habe schon versucht per SetFocus() den Eingabefokus auf mein DialogFenster umzusetzen, klappt aber nicht...
Hat jemand von euch eine Idee, wie ich an den Keyboard-Input herankomme?
Vielen Dank für eure Bemühungen.
-
Die DialogProc setzt automatisch den Focus auf das erste Control mit WS_TABSTOP.
Tastatureingaben müsstest Du in dieser Form in einem Keyboard Hook beheandeln, oder einen nicht modalen Dialog erzeugen und die Messageloop selber abhandeln.
-
Danke schonmal. Nun ja, Keyboard-Hook ist mir auch schon eingefallen, allerdings schlägt SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) KeyBoardProc, hInst, 0) bei mir fehl, wenn ich sie als Reaktion auf WM_INITDIALOG aufrufe, d.h. der HHOOK ist NULL...
Zudem stellt sich die Frage, wie man dann die Nachrichten, welche die HOOKPROC bekommt, in WM_CHAR übersetzt, müsste man wohl irgendwie mit den VK-Codes machen....und eine WM_CHAR zu verschicken ist auch nicht gerade angenehm, da der LPARAM ziemlich kompliziert ist...gelinde gesagt.Wäre es nicht möglich, in dem Dialog ein Child-Window der Grösse (0/0) zu erzeugen und mit WS_TABSTOP zu versehen, und dann den Fokus immer auf dieses Fenster umzusetzen...?