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.