Hilfe zur Dokument/Ansicht Struktur bzw. Aufrufreihenfolge bei MDI - Anwendungen



  • Hallo !

    Ich habe Probleme beim Verständnis mit der Dokument/Ansicht Struktur und der Reihenfolge der Aufrufe. Hat jemand von Euch vielleicht einen interessanten Artikel hierzu ?

    Ich habe bereits einige Sachen gefunden. Allerdings wird das meist nur oberflächlich erläutert....

    Vielen Dank !



  • So "oberflächlich" wie du fragst wirst du wohl auch hier nichts besseres bekommen...

    ... werd mal genauer. 😉



  • Okay ! Sorry !

    Also:

    Document -> soll für die Daten sein bspw. Speicherung usw.
    View -> stellt die Daten im Formular dar ....
    App -> soll die Anwendung insgesamt repräsentieren ? meine ich zumindest
    MainFrame -> ist der äußere Rahmen oder was soll MainFrame tun ?
    Childframe -> das Dokument an sich - Denke ich !

    hhmmm.... So weit so gut.

    Mein Problem liegt darin, dass ich nicht weiss, wie die Abarbeitung erfolgt. Wer wird zuerst angesprochen ?

    Wo starte ich ?

    Welche Methode wird als erstes aufgerufen ?

    Wie wird die Kommunikation zwischen dem Ganzen realisiert ? Also bspw. ich ändere Daten in der View, wer ist für die Speicherung bzw. Änderung der Daten jetzt nun die richtige Ansprechstation ?

    OOP an sich mit Get und Set - Methoden sind mir ein Begriff.

    Sorry, wenn ich mich unklar ausdrücke. Bisher habe ich mit C++ nur Kommandozeilenprogs geschrieben - da wird zuerst main() aufgerufen und dann gehts los und genau dieser Zusammenhang ist mir bei der geteilten Struktur
    der Programmierung nicht klar. 😞



  • Ahh, darauf kann ich auch antworten. 🙂

    Mainframe ist das Hauptfenster und Childframe das innere Fenster (das wo die Daten drin angezeigt werden).
    Ich bin bei MDI leider nicht superfit, aber es sollte erstmal weiterhelfen, also:

    Zuerst werden die Konstruktoren aufgerufen. 😉
    Naja, ich vermute mal, dass du die ganzen Nachrichtenbahndlungsfunktionen meinst.
    Eine gute "Adresse" ist InitInstance in der App. Bei den anderen Klassen ist es unterschiedlich. OnNewDocument, OnInitialUpdate oder OnCreate - je nachdem welche Basisklasse. 🙂

    Wie wird die Kommunikation zwischen dem Ganzen realisiert ? Also bspw. ich ändere Daten in der View, wer ist für die Speicherung bzw. Änderung der Daten jetzt nun die richtige Ansprechstation ?

    Daten sagt doch alles: Das Document! Das kriegst du im View über GetDocument und einen dynamic_cast auf die richtige Klasse.

    Zum View rüber ist schon schwerer, ich kann es auch nicht und gebe meinem Doc zu Anfang einen Zeiger auf den View. 😃

    Um den ganzen Kram zu verstehen brauchst du ein paar gute Tutorials. Such mal nach Scribble. Ist englisch, aber sehr ausführlich. Oder Bei www.mut.de in der Leseecke Visual C++ in 21 Tagen (ist nicht sehr ausführlich, aber ein netter Anfang).

    Achja: Da du bisher Kommandozeilenprogramme geschireben hast - eines noch:
    Bei Windowsprogrammen ist alles Nachrichtenbasiert. Du hast keinen klar vorgegebenen Programmablauf mehr, sondern es wird auf Nachrichten reagiert.
    Eine gute Einführung gibt es in dem Buch:
    Programming Windows with MFC | ISBN: 1572316950
    Das ist leider allgemein recht teuer und auf Deutsch nicht mehr zu kriegen außer für horrende Preise bei Ebay.

    So, sind nun ein paar Klarheiten beseitigt? 😉



  • Vielen Dank für Deine Antwort estartu_de !

    Das mit den Konstruktoren schaue ich mir mal in den Basisklassen an. (Sehr guter Tip !)

    Das Buch "Visual C++ in 21 Tagen" habe ich gelesen. Da kann ich Dir nur Recht geben, was die Ausführlichkeit betrifft. Teilweise fallen da Gesetzmäßigkeiten vom Himmel und verschwinden am Ende des Absatzes. 😉

    Auch für den Buchtip meinen Dank. Ich habe bereits nach einer Referenz gesucht in den Bibliotheken, nur leider scheint das Thema zu spezifisch zu sein. Fündig bin ich also nicht geworden. Ich versuche mal, ein Exemplar Deines vorgeschlagenen Buches zu finden.

    Mein Problem ist, dass ich Änderungen in einer bereits bestehenden Anwendung vornehmen soll und mir daher das Verständnis für jede Funktion hart erkämpfen muß.

    Nochmals meinen herzlichsten Dank !



  • Achja, diese Seite hier hat mir damals sehr geholfen: http://www.henkessoft3000.de/

    Und: Das Buch ist zum Teil schwere Kost. Aber ich kenne keines, wo das vergleichbar drin beschrieben ist.

    Viel Erfolg 🙂



  • Nochmals Vielen Dank !!!!!

    Ich schaue mir heute Abend mal den Link an.

    Bis dann


Anmelden zum Antworten