GetDocument() ???



  • Hallo zusammen,

    ich habe mal wieder ein Problem:
    In meiner MDI - Anwendung erstelle ich mir manuell ein neues ChildFenster, daß mit CSplitterWnd in zwei Teile geteilt ist. Die eine Hälfte davon bekommt mittels CreateView eine von CView abgeleitete Klasse als Inhalt. Aus eben dieser Klasse möchte ich nun auf die Document - Klasse der Hauptanwendung zugreifen.
    Ich habe es meines Wissens standardmäßig mit folgendem Code probiert:

    CRVSDoc* pDoc = (CRVSDoc*)GetDocument();
    

    Ich kann nun im Quelltext auch einwandfrei auf die Document - Klasse zugreifen (sichtbar an den automatischen Vorschlägen vom Visual Studio 🙂
    Das Problem ist jetzt nur, daß mir mein Programm jetzt immer sobald er an diese Stelle kommt mit einem "Debug Assertion Failed" abschmiert.

    Also nochmal in Kurzform: der reine GetDocument Befehl klappt noch. Nur wenn ich dann wirklich auf eine Variable der Document-Klasse zugreife, dann stürzt das ganze Programm ab.

    Hat jemand eine Idee, woran das liegen könnte??

    Vielen Dank schon mal!



  • Versuch mal:

    AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()
    

    Sollte theoretisch von überall aus gehen...



  • Vielen Dank erstmal für den Hinweis.
    Das habe ich allerdings auch schon probiert.
    Ich bekomme ja einen Zeiger auf die Dokumenten - Klasse. Das Problem ist nur, daß das Programm immer abstürzt, sobald ich dann auf ein Element der Dok-Klasse zugreifen möchte. (Ein typischer Debug Assertion Failed)

    Hat da jemand noch eine Idee?



  • (Ein typischer Debug Assertion Failed)

    Hat da jemand noch eine Idee?

    Klar: Tu das, was man dann so typischerweise macht. 🙄
    Wiederholen drücken, Quellcode gucken. 🙄

    Wenn du es nicht rausfindest, kannst du es hier ja auch mal zeigen. 🙂



  • Habe ja auch schon mit dem Debugger Schritt für Schritt nachgesehen, aber wenn der Fehler in irgendwelchen Assembler-Dateien dann auftritt, dann sagt mir das ziemlich wenig, naja, man ist halt nicht perfekt.

    Hier mal der Quelltext:

    CRVSDoc* pDoc = (CRVSDoc*)GetDocument();
    CRect rect;
    GetClientRect(rect);
    pDC->DrawText(pDoc->test,rect,DT_WORDBREAK);
    

    Habe es auch schon mit Umwegen versucht, an die Dokumenten - Klasse heranzukommen, aber immer wenn ich auf sie zugreife, stürzt das Programm ab.

    Wäre schön, wenn mir jemand einen Tip geben kann 🙂


Anmelden zum Antworten