Wie kann man die Tab-Reihenfolge in einem Win32-Dialog programmgesteuert ändern?

StackOverflow https://stackoverflow.com/questions/50236

  •  09-06-2019
  •  | 
  •  

Frage

Oft muss ich einem Dialog ein Steuerelement hinzufügen, nachdem der Dialog über die Dialogvorlage und CreateDialogIndirect generiert wurde.In diesen Fällen wird die Tab-Reihenfolge durch die Dialogvorlage festgelegt und es gibt keine offensichtliche Möglichkeit, die Tab-Reihenfolge durch Einbinden eines neu erstellten Steuerelements zu ändern.

War es hilfreich?

Lösung

Ich habe kürzlich entdeckt, dass Sie SetWindowPos verwenden können, um dies zu erreichen.Bestimmen Sie, nach welchem ​​Steuerelement Sie das neue Steuerelement in der Tab-Reihenfolge einfügen möchten, und verwenden Sie dann SetWindowPos wie folgt:

SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); 

Dadurch wird die Z-Reihenfolge der Steuerelemente geändert, wodurch wiederum die Tab-Reihenfolge festgelegt wird.

Andere Tipps

Ich weiß, dass dies eine alte Frage ist, aber hier erfahren Sie, wie man sie zur Kompilierungszeit macht (was in den allermeisten Fällen vorzuziehen ist):http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx

Meine Lieblingsmethode:

  1. Wählen Sie im Menü „Ansicht“ die Option „Tab-Reihenfolge“.
  2. Wählen Sie „Interaktiv zuweisen“.
  3. Doppelklicken Sie neben dem Steuerelement, das Sie in der Registerkarte in der Registerkartenreihenfolge sein möchten.
  4. Klicken Sie für jedes der anderen Steuerelemente auf das Feld für die Tabulatorreihenfolge.
  5. Klicken Sie überall im Formular, um Ihre Änderungen zu speichern und den Registerkarte Bestellmodus zu beenden, oder drücken Sie den Registerkarte ESC, um den Registerkarte zu beenden, ohne Ihre Änderungen zu speichern.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top