"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.


  • Mod

    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...?


Anmelden zum Antworten