Zeitpunkt zum Fenster / Control initialisieren



  • Hallo,
    ich habe da mal ein Problem...

    Ich habe ein Frame mit einem Splitter. Im Splitter ist ein Dialog mit TreeView und ein weiterer Dialog mit mehreren Controls.
    Der TreeView wird aus einer Datenbank geladen und es dauert etwas bis er gefüllt ist.

    Meine Frage:

    Zu welchem Zeitpunkt (d.h. Event-Methode / Überschriebene-Methode) kann ich mein Fenster/Control am besten initialisieren?

    Zur Zeit mache ich das in OnCreate. Das ist eher schlecht, weil das Fenster noch nicht sichtbar ist (und es passiert eine Weile nichts).

    Ist das Fenster zusätlich noch in einem Frame mit einem Splitter etc. siehts schlimm aus. Man sieht das äussere Frame und sobald die initialisierungen der Untergeordneten Fenster fertig ist "springt" das Frame (Größe + innere Fenster tauchen auf).


  • Mod

    Was meinst Du mit initialisieren? Mit Daten befüllen?

    Ich platziere in OnCreate nur notwendigen Code, der das Fenster startklar macht. Keine Daten.

    Daten werden durch die Doc/View Architektur geliefert, die dann OnInitialUpdate/OnUpdate an die Views sendet.



  • Martin Richter schrieb:

    Was meinst Du mit initialisieren? Mit Daten befüllen?

    Gemeint ist das füllen eines TreeViews mit Daten aus einer Datenbank.
    (die Datenbank ist zwar lokal; das füllen dauert 2-3 Sekunden)

    OnInitialUpdate hat den selben/ähnlichen Effekt.

    Mein TreeView befindet sich auf einem Dialog.
    Der Dialog wird über ein CFormView in eimem Splitter angezeigt.
    Der Splitter sitzt direkt in einem CMDIChildWnd; in OnCreateClient wird der Splitter initialisiert (Anzahl Panes und zuweisen der Fenster -> über CreateStatic).

    Die äussere Form ist sichtbar der Splitter mit seinen "Unter-Controls" noch nicht. Ausserdem ist die Größe der äusseren Form noch nicht korrekt. Erst nach dem Befüllen des TreeViews "springt" die Form auf die richtige Größe.

    Das ganze ist ein bisschen durcheinander... Ist mein erster Versuch mit MDI und so einem mit Daten befüllen beim ersten Anzeigen eines Fensters.

    Also meine Frage ist eigentlich:
    Wenn ich ein Fenster in einem Splitter (View oder was auch immer) habe, wann kann ich es mit Daten füllen? Das Fenster (ebenso der Splitter) sollte mit allen Controls bereits sichtbar sein. Erst dann sollte das füllen passieren.
    Welche Methode sollte ich dazu überschreiben oder welcher Event ist dafür geeignet?



  • Mmmh. Also glaube mein Problem gelöst zu haben.
    In OnCreateClient rufe ich noch SetWindowPlacement auf. .showCmd war nicht gesetzt und hat wohl das seltsame Verhalten ausgelöst.


Anmelden zum Antworten