Alle Kinder eines CMainFrame-Objekts bekommen



  • Hi,
    Ich such ne Möglichkeit zu überprüfen, ob beim Beenden des Programms (genauer in CMainFrame::OnDestroy) wenigstens einer der offenen Views jemals gespeichert wurde. Ich wollte es jetzt so verusuchen: Zu jedem offenen View nen Zeiger zu bekommen (hier liegt übrigens das Problem, das bekomm ich nämlihc nciht hin) und dann GetDocument()->GetPathName() darauf aufzurufen.
    Allerdings bekomm ich diese doofen Zeiger nciht ... Hat wer ne Idee?

    CMainFrame ist von CMDIFrame abgeleitet.



  • also so aus dem bacuh raus würde ich es über MDINext() / MDIGetActive() machen (dürfte allerdings den nachteil haben, das die childs alle nacheinandern nach vorne kommen wenn sie gecheckt werden)



  • Da dachte ich auch schon dran, aber die Lösung gefällt mir überhaupt nicht 🙂



  • CWinApp *app = AfxGetApp();
    POSITION pos = app->GetFirstDocTemplatePosition();
    CDocTemplate *pDocTemp = app->GetNextDocTemplate(pos);
    pos = pDocTemp->GetFirstDocPosition();
    while (pos)
    {
    	CDocument *doc = pDocTemp->GetNextDoc(pos);
    	POSITION viewPos = doc->GetFirstViewPosition();
    	CView *view = doc->GetNextView(viewPos);
    }
    

    Müsste funktionieren (fehlen vielleicht noch NULL Zeiger Abfragen).



  • Nur als Anmerkung: Das setzt voraus, dass man nur ein Template und nur eine View pro Dokument hat. Aber die Vorgehensweise lässt sich auf mehrere Templates/Views übertragen.


Anmelden zum Antworten