Modaler Dialog mit static control: WM_KEYDOWN empfangen
-
Hi!
Wie kann ich WM_KEYDOWN in einem modal dialog process empfangen? Wenn er kein control hat, geht's. Aber sobald ich auch nur ein static control hinzufüge, gehts nicht mehr.

-
Es funktioniert, wenn ich das static control subclasse.
Ist ja kein großes Ding, aber gibts nicht doch ne Alternative?
-
Noch was:
Ich möchte wirklich alle virtual key codes abfangen können.
Aber Tabulator, die Pfeiltasten, die Windows-Taste, F10, beide Enter... werden nicht abgefangen.Wie mache ich das?
-
Du könntest einen Hook (=>SetWindowsHookEx mit WH_KEYBOARD) verwenden, damit solltest du so ziemlich alles mitbekommen. Wird nur schwierig, wenn der entsprechende Thread noch mehr Toplevel-Fenster als nur den Dialog erstellt hat.
-
Geht das nicht noch anders?
Mir kommt gerade, die Windowstasten und ALT brauche ich nicht.
Wenn's nicht anders geht, erstelle ich halt einen modeless Dialog (und deaktiviere manuell den Parent?).

-
Afaik liegt das nicht an modal<->nicht modal, sondern daran, dass eigentlich immer ein Control (Child-Fenster) den Keyboard-Fokus hat und entsprechend auch die Nachrichten bekommt. Und so schwierig ist das mit dem Hook nicht, 10-15 Zeilen vielleicht (du brauchst ja keine extra DLL weil's dein eigener Dialog ist).
-
Wäre aber auch sicher nicht gut für AntiViren. Und das soll es aber. Wird ja ein friedliches Programm.
Hab es mal mit einem nicht-modalen Dialog versucht... und siehe da, das static control bekommt nun alles (Plus ALT&F10 mit WM_SYSKEYDOWN).
Hmm...