KeyEvents richtig zuordnen können
-
Hallo zusammen,
ich versuche gerade, ein altes Windows Programm auf wxWidgets umzustellen.
In diesem alten Programm werden Tastendrücke in einer WndProc()-Funktion abgefangen und darauf reagiert. Dabei werden folgende Identifier abgefangen:WM_KEYDOWN
WM_SYSKEYDOWN
WM_SYSCHAR
WM_CHARIch gehe nun her und fange in meinem wxWidgets - Progarmm folgendermaßen diese Events ab:
void OnKeyDown(wxKeyEvent &event){ verarbeiteTastendruck(_T("KeyDown"), event); } void OnChar(wxKeyEvent &event){ verarbeiteTastendruck(_T("Char"), event); }
Ich versuche also, sowohl normale KeyDownEvents als auch Char-Events abzufangen. So wie ich das verstanden habe, werden Tastenkombinationen wie Strg+X oder andere über die Char-Events abgefangen.
Wie kann ich es nun realisieren, dass ich in der Methode "verarbeiteTastendruck()" sowohl normale einzelne Tasten also auch Kombinationen abfangen kann. Wie unterscheide ich diese in dieser Methode?
ich muss z.B. abfangen können, dass einmal F1 allein, F1 mit Alt und F1 mit Strg gedrückt wurde. Auch müssen andere Kombinationen wie ALT + A oder ALT + F usw. abgefangen werden.
Kann ich in dieser Methode eine unterteilung machen, wobei ich dreiBereiche hab?Soll heißen das ich es ungefähr so aufbauen wollte:
verarbeiteTastendruck() { ... if( ALT gedrückt ) { switch(taste) { case A: Behandle ALT+A; case B: Bahandle ALT+B; } } if( STRG gedrückt) { swtich(taste) { case X: Behandle STRG+X; .... } } ansonsten wurde nur eine Taste gedrückt: switch(taste) { case F1: Bandle F1; case a: Bahndle 'a'; ... } }
Kann mir einer dabei helfen? Vielen Dank schon mal!!
Gruß
-
hast du schon hier geschaut:
http://www.wxwidgets.org/manuals/stable/wx_wxkeyevent.html#wxkeyeventoder im Buch (7 MB) auf Seite 175 bis 181:
http://www.phptr.com/content/images/0131473816/downloads/0131473816_book.pdfwxKeyEvent hat die Funktionen ControlDown, AltDown, ShiftDown für die zusätzlichen Tasten und GetKeyCode für die "normalen" Tasten.
Also mit GetKeyCode die Taste ermitteln und prüfen ob zusätzliche Taste mit ControlDown, AltDown, ShiftDown.