UpdateAllViews ...



  • In einer MDI Anwendung leite ich die View-Klasse von CEditView ab. Jedem
    Edit-Fenster ist eine Datei zugeordnet. Was bezweckt die CDocument-Funktion
    "UpdateAllViews". Kann es sein, dass bei CEditView kein Effekt bewirkt wird ?



  • Schon klar, dass die MDI - Fenster keine verschiedene Views sind. Richtet
    UpdateAllViews irgend etwas an, ausser dass es nicht funktioniert ?



  • Folgenden Text habe ich bei meinen ersten Versuchen mit VC++ geschrieben.

    POSITION dpos = GetDocTemplate()->
    GetFirstDocPosition();
    CDocument pD;
    CFile f;
    CString DateiName;
    while ( dpos != NULL )
    {
    pD = GetDocTemplate()->
    GetNextDoc(dpos);
    DateiName = pD->GetTitle();
    f.Open(pD->GetPathName(), CFile::modeRead);
    CArchive ar(&f, CArchive::load);
    ar.m_pDocument = pD;
    pD->Serialize(ar);

    SetModifiedFlag(true); // ist nutzlos
    UpdateAllViews(NULL, 0 ,NULL); // ist nutzlos

    f.Close();
    ar.Close();
    };

    Der Text bewirkt, dass die MDI Edit-Fenster von den Dateien her,
    neu geschrieben werden. Da ich nicht dauernd meinen Quelltext
    neu speichern will ( auf 8 Datenträger, eine halbe Stunde )
    wollte ich wissen ob man den nutzlosen Text stehen lassen kann.



  • GeorgC++ schrieb:

    Was bezweckt die CDocument-Funktion
    "UpdateAllViews". Kann es sein, dass bei CEditView kein Effekt bewirkt wird ?

    GeorgC++ schrieb:

    Richtet
    UpdateAllViews irgend etwas an, ausser dass es nicht funktioniert ?

    Welchen Effekt erwartest du denn? Diese Funktion löst nur OnUpdate-Aufrufe in den View-Klassen aus und ist dafür gedacht, andere Views zu informieren, dass eventuell die Anzeige in diesen anderen Views aktualisiert/geändert werden muss. Wenn dort nichts eigenes programmiert wurde, dann passiert nicht sehr viel.

    GeorgC++ schrieb:

    [...]wollte ich wissen ob man den nutzlosen Text stehen lassen kann.

    Wenn du es nicht benötigst, und das sieht hier so aus, es wird nur gespeichert (keine Abhängigkeit der Anzeigen), dann lass es weg (in der while-Schleife muss das auch nicht in jedem Durchlauf aufgerufen werden, wenn, dann ausserhalb).

    MfG,

    Probe-Nutzer

    MfG


Anmelden zum Antworten