Tastaturbefehle bei MFC Dialoganwendungen
-
Hallo,
kann mir jemand sagen, welche Befehle eine Dialoganwendung ausführt, wenn man z.B zwischen mehreren Kontrollkästchen mit der Pfeiltaste hin und her springt.
Ich brauche die, damit ich in einer Ansammlung von Kontrollkästchen mit einem Drehregler ein gewolltes Kästchen aussuchen kann, um es dann durch drücken eines Knopfes an dem Regler auszuwählen.Oder weiss jemand, wie man so etwas eleganter löst?
Grüße und vielen Dank aus München
-
Hat denn keiner ein Herz und kann mir das kurz erklären?
-
versuch mal SetCheck
-
Guck dir auch WM_SETFOCUS und WM_KILLFOCUS an.
-
Dabei kann ich doch nur auslesen, wie der Zustand eines Buttons ist. Ich muss aber sowas wie nen Fokus setzen. Es soll lediglich der Text um die Kontrollkästchen so hervorgehoben werden, wie wenn ich sie mit den Pfeiltasten der Tastatur auswählen würde.
-
Ahh, SetFocus suchst du. Dazu solltest du dir entweder Controlmembervariablen anlegen oder dir noch GetDlgItem ansehen.
-
Also ich habe das im Moment so gelöst. Habe mir eine einfache Dialoganwendung gebastelt die nur 4 Kontrollkästschen beinhaltet. IDC_CHECK1, IDC_CHECK2, IDC_CHECK3, IDC_CHECK4 diese haben jeweils die Membervariablen m_check1, m_check2, m_check4 und m_check4 bekommen.
Dann habe ich im OnInitDialog() folgende Zeile eingegeben und natürlich den return auf FALSE gesetzt

// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen GetDlgItem(IDC_CHECK3)->SetFocus(); return FALSE;Das dumme ist nur, das das dritte Kontrollkästchen zwar den Fokus erhält, es aber in der Anwendung nicht sichtbar ist. Es ist also nicht dasselbe wie wenn man die einzelnen Kästchen mit den Pfeiltasten auswählt
-
Hmm, jetzt wo du es sagst...
Ich habe ein ähnliches Problem, habe es aber ignoriert. Wenn man das Häkchen per Tab anwählt, sieht man den Focus nämlich auch nicht.
Sorry, an dieses Fehlverhalten hatte ich eben nicht gedacht.
-
Bei mir ist das etwas anders. Hab mir mal schnell nen Timer gebastelt, der jede Sekunde den Focus an ein anderes Kontrollkästchen gibt. Am Anfang macht er das auch völlig unsichtbar, aber wenn man zur Laufzeit einmal die Tab-Taste betätigt, wird der Fokus visualisiert und springt dann auch immer mit über zum nächsten Kästchen.
nun stellt sich für mich nur noch die Frage, kann ich der Applikation irgendwie mitteilen, das ich die TAB Taste drücke. natürlich ohne sie in der Realität drücken zu müssen.
-
Servus,
Öhm ja, kannst du, aber ich glaube nicht das es eine gute Lösung ist. *aber auch keine gute Lösung kennt*
PostMessage(WM_KEYDOWN, VK_TAB, 0);An das eigene Fenster schicken. Postmessages kehrt aber direkt zurück ohne abzuwarten ob die Message auch angekommen ist. Wenn er warten soll bis sie angekommen ist, nimm SendMessage.
*winke*
Hellsgore
-
Warum ist die Lösung mit der TAB-TASTE nicht so besonders gut?