Dokumentencorlage erstellen und verwenden



  • Hallo,

    ich wollte gerne folgendes nachfragen:

    Mein Ziel ist es eine zweite Dokumentenvorlage einzusetzen:

    Hierzu bin ich so vorgegangen:
    Ich habe in der InitIstance Methode eine zweite Dokumentenvorlage erstellt.

    CMultiDocTemplate* pDocTemplate2;
    pDocTemplate2 = new CMultiDocTemplate(
    IDR_DELKTYPE,
    RUNTIME_CLASS(CDrDoc),
    RUNTIME_CLASS(CDrChildFrame), // Benutzerspezifischer MDI-Child-Rahmen
    RUNTIME_CLASS(CDrView));
    AddDocTemplate(pDocTemplate2);

    Das Funktioniert auch. Ich kann wenn ich auf den Neu Button klicke zwischen zwei Dokumentenvorlagen
    wählen.
    Allerdings ist es mein Ziel aus einer Funktion der ViewKlasse (erste Dokumenvorlage) auf Membervariablen der
    Dokumentenklasse der zweiten Dokumentklasse (CDrDoc) zuzugreifen.
    Bislang habe ich beispielsweise für Klassen die von CDialog abgleitet waren um auf Membervariablen der
    Dokumentenklasse zuzgreigen folgendes verfahren verwendet:

    1 CDelApp* pApp = (CDelApp*) AfxGetApp();
    2 CFrameWnd* pChild = ((CMDIFrameWnd*) (pApp->m_pMainWnd))->GetActiveFrame();
    3 CDelView* pView = (CDelView*) pChild->GetActiveView();
    4 CDelDoc *pDoc = pView->GetDocument();

    Ich glaube das gibt in der Zeile 3 ein Problem, da es nun zwei verschiedne CMultiDocTemplates gibt.

    Deshalb habe ich ein Verfahren über LoadFrame versucht es stürzt ab in der Zeile 3 ab

    1 CFrameWnd a;
    2 a.Create(NULL,"hallo",WS_BORDER ,rect, pApp->m_pMainWnd, MAKEINTRESOURCE(IDR_DELTAKTYPE),WS_EX_ACCEPTFILES ,NULL);
    3 a.LoadFrame(IDR_DELTAKTYPE,WS_BORDER,(CMDIFrameWnd*) pApp->m_pMainWnd,NULL);

    Wie kann ich innerhalb der ersten Dokumentenvorlage einen Zeiger auf die View und Doc-Klasse der zweiten Dokumentenvorlage erhalten.

    Ein anderes Problem was ich in diesem zusammenhang noch habe, ist in der Header von CDrView kann
    ich mir keinen Zeiger auf CDrDoc holen d.h. bei CDrDoc* GetDocument(); im public Bereich der ViewKlasse gibt es eine
    Fehlermeldung.
    Wie kann ich ereichen, daß CDrDoc mit CDrView assoziert wird.

    Noch eine Frage: Ich lese mine Dokumente nicht über Öffnen ein. Sondern habe in der CMainFrame Klasse folgendes gemacht


Anmelden zum Antworten