MDI, ein Dokument mit mehrer Views erstellen, aber wie?



  • Hallo Leute,
    nach elend langer Zeit habe ich mich wieder an dem Doc/View Modell versucht. Funktioniert auch soweit ganz gut.
    Mein Ziel ist es, zwei Dokumente zu erstellen die jeweils mit mehreren Views ausgestattet sind.
    Dabei sind jetzt allerdings ein paar Probleme aufgetreten. Zum einen öffnet jeder View sein eigenes Dokument...allerdings sollten alle Views des 1. Dok auch mit dem gleichen arbeiten. Habe dann aber in einem Buch die Lösung gefunden.

    CDocTemplate* pTemplate = (((CMDITestApp*)AfxGetApp())->m_pTemplateHex2);
    		CFrameWnd* pFrame=pTemplate->CreateNewFrame(pDocument,pActiveChild);
    		if (pFrame==NULL)
    		{
    			AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
    			return;
    		}
    		pTemplate->InitialUpdateFrame(pFrame,pDocument);
    

    In dem Fall "klaut" sich der neue View einfach das Dok-Objekt vom alten View, so können beide gleichzeitig auf das gleiche Dokument zugreifen.
    Allerdings wirft das neue Probleme auf, zum einen muss ein andere View aktiv sein (also nicht minimiert oder gar geschlossen) und zum anderen muss der aktive View dem gleichen Dokument angehören, wie das was ich öffnen möchte. Sprich ist Dok1View1 und Dok2View1 offen und ich will Dok1View2 öffnen, während Dok2View1 als aktiv gesetzt ist, so gibts entweder einen Absturz der Dok1View2 legt sich einen eigenes Dokumentobjekt an.

    Gibt es nich eine einfachere und vor allem sichere Möglichkeit alle Views eines Dokuments auf dem gleichen Dokumentenobjekt arbeiten zu lassen?
    Ich meine das entspricht doch dem Sinn des Doc/View Modells, warum also so kompliziert?

    Ich wäre für jede Hilfe dankbar.

    Gruß
    Groove



  • Naja, schade das es keiner weiß.

    Aber ich bin selber auf eine Lösung gestoßen, einfach hier
    http://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c3295/
    die neuen DocTemplates runter laden und schon greifen alle views auf ein und das selbe Dokument zu!

    Gruß
    Groove


Log in to reply