TabOrder ist nach Hinzufügen von Accelerator nicht mehr nutzbar...
-
Hallo,
ich habe einen Accelerator in meine Dialog-Anwendung hinzugefügt. Über PreTranslateMessage werden di Events abgearbeitet.
Leider kann ich jetzt nicht mehr mit TAB entlang der Controls (Edit, Button, ...) springen.
Auch der DEFAULT-BUTTON hat kein Event mehr.Kann mir jemand sagen, wie ich die TAB-Order wieder aktiv bekomme?
1000Dank für Hilfe
-
Du hast Recht, ist bei mir auch so. Hab noch gar nicht getestet ob TAB noch geht nachdem ich meine Shortcuts im Programm eingebaut hab. Ich glaub es liegt daran dass der Accelerator vielleicht alle Tasten "überschreibt". Wenn du bei TAB also nichts definiert hast, macht er auch nichts. Obs wirklich so ist weiss ich nicht, und leider hab ich keine Ahnung wie man das wieder zurückstellen könnte ohne aufwändiges "Focus-Vergeben" etc.
Ich schau mich mal etwas um...
-
Zeig mal dein PreTranslateMessage. Ich mache gerade "Tabspringerei" von Hand.
Das sieht so aus:
BOOL C1Dlg::PreTranslateMessage(MSG* pMsg) { // Wurde eine Taste gedrückt? if (pMsg->message == WM_KEYDOWN) { UINT nKeyCode = pMsg->wParam; // virtual key code of the key pressed // Tabtaste? if (nKeyCode == VK_TAB) { CWnd* pAlt = GetFocus(); switch(pAlt->GetDlgCtrlID()) { case IDC_EDT_MEDIKAMENTE: GetDlgItem(IDC_RDO_BRILLE_JA)->SetFocus(); break; case IDC_RDO_BRILLE_JA: GetDlgItem(IDC_RDO_BRILLE_NEIN)->SetFocus(); break; case IDC_RDO_BRILLE_NEIN: GetDlgItem(IDC_RDO_DIABETIKER_JA)->SetFocus(); break; //usw... default: return CDialog::PreTranslateMessage(pMsg); break; } return TRUE; } } return CDialog::PreTranslateMessage(pMsg); }
-
Jo estartu, von Hand gehts auch aber irgendwie wird das bei insgesamt 40 Dialogelementen (wie ich sie momentan habe) doch relativ mühsam und verdammt Codeverschlingend
Bin grad nach Alternativen am suchen...
-
Schon klar, und Shift+Tab hatte ich auch völlig vergessen.
Ich gucke mal, ob man mit GetNextDlgTabItem was anfangen kann. Wenn die Radiobuttons da drin sind, ist mir geholfen.
Wenn nicht, solltet wenigstens ihr beide damit hinkommen.
-
Hmm, scheint ein guter Ansatz, nur haben alle Codebeispiele (GOOGLE & Co.) mit GetNextDlgTabItem einfach nicht zum erfolg geführt.