ChildDialog auf Formview - alle Controls in Parent sichtbar



  • Hallo,

    ich habe hier ein Programm, bei dem auf einem Formview sehr viele Controls, teilweise übereinander, liegen.

    In Abhängigkeit verschiedener Bedingungen sollen von diesen Controls immer nur einige sichtbar sein.
    Momentan mache ich dies noch so, dass ich für jedes Control in Abhängigkeit dieser Bedingungen mit GetDlgItem(IDC...)->ShowWindow(SW_SHOW / SW_HIDE) die Sichtbarkeit steuere.

    Da ich aber inzwischen etwa 30 Controls und 5 verschiedene Zuständ habe, ist das ganze wirklich nicht sehr pflegeleicht.
    Insbesondere das Hinzufügen von neuen Controls auf dem ohnehin schon stark überfüllten View-Dialog gerät zum Glückspiel.

    Nun habe ich entdeckt, dass man so etwas mit Child-Dialogen regeln kann.
    Aber den Datenaustausch zwischen dem FormView und dem jeweilig aktiven Child-Dialog müsste ich weiterhin von Hand erledigen (Knopfdruck auf Child - Message an Parent - Funktion ausführen).
    Gibt es eine Möglichkeit, die Control-IDs auf den Child-Dialogen direkt in die MessageMap bzw. in die DoDataExchange auf dem Parent (dem CFormView) einzubinden? So dass sich die Funktionalität der Child-Dialoge darauf beschränkt, Controls anzuzeigen bzw. auszublenden?

    Vielleicht hat hier schon mal jemand so etwas ähnliches gemacht?

    Danke

    Andreas



  • Bevor es zu weit nach unten abrutscht...

    Hat niemand eine Idee, wie man das lösen könnte?
    Besonders das Problem, dass beim Dialog-Entwurf Unmengen von Controls übereinander gestapelt darauf warten, bearbeitet zu werden, ist extrem unpraktisch...

    Gruß

    Andreas



  • Im normalfall sollte ja jeder Dlg mit ner Klassen verbunden sein, die sich um die Konsistenz der Daten kümmert. Ich versteh zwar nicht warum Du das nicht auf die einzelnen Dlg "auslagern" kannst, aber Du kannst versuchen mit SetWindowLong(GWL_WNDPROC) die WndProc deines Dialoges auf dein Formview zu 'Verbiegen' aber ob das geht ohne Probleme? Ich habs noch nicht gemacht, aber Du kannst ja mal Versuchen.

    Gruß


Anmelden zum Antworten