Dialog mit wechselnden Layout
-
Hallo!
Ich habe eine Klasse von CFormView abgeleitet und diese mit einem DialogLayout aus den Resourcen verbunden. In der linken Haelfte habe ich einen Treeview und in der rechten Haelfte moechte ich die Eigenschaften des aktuell markierten Blattes des Trees darstellen. Diese Eigenschaften sind aber von dem Typen des Blattes abhaengig. Manchmal sind es Bilder manchmal ist es Text, der editiert werden kann. Also soll sich das Layout entsprechend aendern.
Wie aber geht das?Mehrere Dialog-Resourcen erstellen und dann immer den richtigen einblenden?
Wie geht das?Gruss
Thomas
-
Tombri schrieb:
Hallo!
Mehrere Dialog-Resourcen erstellen und dann immer den richtigen einblenden?
das ist eine moeglichkeit, wird aber recht unuebersichtlich, weil das visual studio schon 2 ueberlagerte steuerelemte nicht mehr richtig darstellt (im editor).
es gibt noch die moeglichkeit die steuerelemte direkt im code zu erstellen (ist nicht schwer, und ist im prinzip das, was visual studio fuer dich uebernimmt).beispiel:
m_poTitelFrei = new CEdit(); m_poTitelFrei->Create(ES_READONLY | ES_RIGHT | WS_CHILD | WS_VISIBLE, CRect(left, top +24, left + 85, top + 42), this, 76547);
hier wurde ein editfeld erstellt. die ES_xxx parameter sind im prinzip die checkboxen die du im eigenschaftsdialog setzen kannst. CRect definiert den raum, den das editfeld einnehmen soll.
genauso geht das mit den andern steuerelementen auch. in der msdn gibts eigentlich zu jedem element ein beispiel. dort werden dann auch fuer jedes element die einzelnen parameter erklärt.
ein- und ausblenden musst du die felder dann praktisch bei jeder neuen auswahl mit
m_poTitelFrei->ShowWindow(true);
oder eben false.
Esco
-
Gute Idee, das waere ein Loesung auch wenn es recht unkomfortabel ist die Elemente von Hand zu platzieren.
Gibt es die Moeglichkeit einen Dialog in einem anderen Dialog einzublenden?
Ungefaehr so wie es bei den CPropertySheet und CPropertyPage laeuft?Gruss
Thomas
-
dass das einfacher ist, kann ich mir nur schwer vorstellen.
wenn du das mit create 5x gemacht hast, dann ist des kein problem mehr.
du musst ja auch nicht alle elemente ueber Create() erstellen, sondern nur die, die andere ueberlagern.Esco
-
Ich arbeite am gleichen Problem könntest du mir etwas helfen wie du das TabCtrl modifiziert hast das es nicht sichtbar ist