Datenaustausch zwischen Document und View Klasse bei SDI Application



  • Hallo,

    kann mir jmd kurz erklären, wie der Informationsaustausch zwischen der Document und der View Class passiert? Soweit ich es verstanden habe, weiß nur die Document Class welche Checkbox der View z.B. gesetzt ist oder nicht.

    Die View-Class holt sich lediglich diese Werte aus der Document Class ab. Am Anfang in der OnInitialUpdate(); wird hier für jede Checkbox der View dann einzeln der Wert abgeholt oder gleich eine Liste???

    ViewClass::OnInitialUpdate()
    {
        CList *mlist = GetDocument()->GetList();
    
    }
    

    Und diese Liste beinhaltet nacheinander den Status der verschiedenen Checkboxen etc.?

    Wie erfolgt der Datenaustausch wärhend das Programm läuft und im Document gemerkt wird, dass Sachen aus der View geändert werden müssen? Gibt es hier auch den umgekehrten Fall, dass die View dem Doc erzählen muss, dass Checkboxen sich in ihrem Zustand geändert haben?

    Mfg
    Johannes



  • Das Zauberwort heißt Dokument-Ansichts-Trennung oder Doc/View-Modell. Lies mal hier nach, da ist es ganz gut beschrieben:

    http://www.cpp-tutor.de/mfc/mfc/kap4/kapitel4.htm

    Genauer gesagt auch hier: http://www.cpp-tutor.de/mfc/mfc/kap4/lektion6.htm


  • Mod

    Das Docuemnt ruft UpdateAllViews auf!



  • Martin Richter schrieb:

    Das Docuemnt ruft UpdateAllViews auf!

    Danke für die Links.

    In meinem Hauptmenu (abgeleitete CFormView-Class), befinden sich Buttons etc. U.a. soll es möglich sein durch Click auf einen Button, einen neuen Dialog zu öffnen

    dlgStart.DoModal();
    

    Bis jetzt sende ich auf das OnClickButtonEvent() eine SendMessage von der CFormView Class zur MainFrame-Class, innerhalb der ich den neuen Dialog starte.

    Allerdings kann ich jetzt diesen Dialog nicht mehr über das Document updaten, wenn sich irgendwelche Werte die in diesem Dialog gezeigt werden, statt finden, oder? Da die CDialog Class nicht von der Funktion UpdateAllViews() aufgerufen wird, da es sich hier um keine CFormView oder CView abgeleitete Class handelt..

    UpdateAllViews(NULL)
    

    Gruß
    Johannes



  • Johannes T. schrieb:

    Martin Richter schrieb:

    Das Docuemnt ruft UpdateAllViews auf!

    Danke für die Links.

    In meinem Hauptmenu (abgeleitete CFormView-Class), befinden sich Buttons etc. U.a. soll es möglich sein durch Click auf einen Button, einen neuen Dialog zu öffnen

    dlgStart.DoModal();
    

    Bis jetzt sende ich auf das OnClickButtonEvent() eine SendMessage von der CFormView Class zur MainFrame-Class, innerhalb der ich den neuen Dialog starte.

    Allerdings kann ich jetzt diesen Dialog nicht mehr über das Document updaten, wenn sich irgendwelche Werte die in diesem Dialog gezeigt werden, statt finden, oder? Da die CDialog Class nicht von der Funktion UpdateAllViews() aufgerufen wird, da es sich hier um keine CFormView oder CView abgeleitete Class handelt..

    UpdateAllViews(NULL)
    

    Gruß
    Johannes

    oh je... Du brauchst doch nur in deiner Doc- oder Viewklasse einen Handler für das Buttondrücken einbauen und dann darin dlgStart.DoModal() aufrufen.


Anmelden zum Antworten