Dr.Doom
2016-08-12, 12:09:39
Howdy,
ich habe einen Hauptdialog in dem ein TabControl eingebettet ist, welches je einen Unterdialog als Inhalt auf den Tabs anzeigt.
Alles in C dem Muster folgend:
TC_ITEM tci;
hTabControl = GetDlgItem (hDlg, ID_MYTABCONTROL); // TabControl in Hauptdialog
tci.mask = TCIF_TEXT;
tci.iImage = -1;
tci.pszText = "mytab1";
TabCtrl_InsertItem (hTabControl, 0, &tci);
...
// dasselbe für "mytab2" nochmal
...
hTabs[0] = CreateDialog (hInst, "DLG_TAB_MYTAB1", hTabControl, Proc_MyTab1); // Unterdialoge
hTabs[1] = CreateDialog (hInst, "DLG_TAB_MYTAB2", hTabControl, Proc_MyTab2); // "Proc_xyz" = Callback für Message-Behandlung
...
Für jeden Dialog, Unterdialoge des TabControls und umgebender Hauptdialog, der neben anderen Controls (Button, TextEdit, etc) das TabControl beherbergt, ist die "Aktivierungsreihenfolge" festgelegt worden.
Solange man noch im Ressourceneditor ist und man die einzelnen Dialoge testet ("Testdialogfeld"), funktioniert die Weiterschaltung wie sie soll -- aber halt nur für jeden Dialog separat betrachtet.
Wenn man das Ganze aber übersetzt (debug/release, egal) und ausführt, dann springt der Focus beim Druck auf Tab immer aus einem Unterdialog auf ein Control des Hauptdialogs.
Muss ich den Tab-Tastendruck abfangen, nachsehen, ob gerade ein Control auf einem der TabControl-Unterdialoge den Focus hat und den Focus selber zum nächsten Control versetzten? Oder die Message an einen der Unterdialoge weiterreichen?
Oder...?!
Mir ist nicht klar, wo ich den Schraubenziehen ansetzen muss, um durch Tab-Drücken im Unterdialog zu bleiben und dort immer zum nächsten Control weiterzuschalten.
ich habe einen Hauptdialog in dem ein TabControl eingebettet ist, welches je einen Unterdialog als Inhalt auf den Tabs anzeigt.
Alles in C dem Muster folgend:
TC_ITEM tci;
hTabControl = GetDlgItem (hDlg, ID_MYTABCONTROL); // TabControl in Hauptdialog
tci.mask = TCIF_TEXT;
tci.iImage = -1;
tci.pszText = "mytab1";
TabCtrl_InsertItem (hTabControl, 0, &tci);
...
// dasselbe für "mytab2" nochmal
...
hTabs[0] = CreateDialog (hInst, "DLG_TAB_MYTAB1", hTabControl, Proc_MyTab1); // Unterdialoge
hTabs[1] = CreateDialog (hInst, "DLG_TAB_MYTAB2", hTabControl, Proc_MyTab2); // "Proc_xyz" = Callback für Message-Behandlung
...
Für jeden Dialog, Unterdialoge des TabControls und umgebender Hauptdialog, der neben anderen Controls (Button, TextEdit, etc) das TabControl beherbergt, ist die "Aktivierungsreihenfolge" festgelegt worden.
Solange man noch im Ressourceneditor ist und man die einzelnen Dialoge testet ("Testdialogfeld"), funktioniert die Weiterschaltung wie sie soll -- aber halt nur für jeden Dialog separat betrachtet.
Wenn man das Ganze aber übersetzt (debug/release, egal) und ausführt, dann springt der Focus beim Druck auf Tab immer aus einem Unterdialog auf ein Control des Hauptdialogs.
Muss ich den Tab-Tastendruck abfangen, nachsehen, ob gerade ein Control auf einem der TabControl-Unterdialoge den Focus hat und den Focus selber zum nächsten Control versetzten? Oder die Message an einen der Unterdialoge weiterreichen?
Oder...?!
Mir ist nicht klar, wo ich den Schraubenziehen ansetzen muss, um durch Tab-Drücken im Unterdialog zu bleiben und dort immer zum nächsten Control weiterzuschalten.