Veröffentlicht 9. April 200223 j Hallo! ich hab jetzt endlich herausgefunden, wie eine kommunikation zwischen der View und der Doc Klasse geht. und Zwar ist da in der ...View.h folgender eintrag : #ifndef _DEBUG // debug version in AdressenVerwaltungView.cpp inline CAdressenVerwaltungDoc* CAdressenVerwaltungView::GetDocument() { return (CAdressenVerwaltungDoc*)m_pDocument; } #endif und in der ...View.cpp dieser : ////////////////////////////////////////////////////////// // CAdressenVerwaltungView diagnostics #ifdef _DEBUG void CAdressenVerwaltungView::AssertValid() const { CFormView::AssertValid(); } void CAdressenVerwaltungView: :Dump(CDumpContext& dc) const { CFormView: :Dump(dc); } CAdressenVerwaltungDoc* CAdressenVerwaltungView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAdressenVerwaltungDoc))); return (CAdressenVerwaltungDoc*)m_pDocument; } #endif //_DEBUG Der Zugriff von der View auf die Doc geht dan so : GetDocument()->... OK, jetzt wollte ich das ganze andersherum machen, also von der Doc auf die View zugreifen, dann geht es nicht, obwohl ich die ganzen sachen dementprechend anpasse... habe ich was vergessen? ------ Nachtrag ------------- In der Haupt-CPP habe ich diesen eintrag gefunden : CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CAdressenVerwaltungDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CAdressenVerwaltungView)); AddDocTemplate(pDocTemplate); Möglicherweise hängt das damit zusammen, aber wie kann ich das umändern? THX
10. April 200223 j Von einem von CDocument abgeleiten Klassenobjekt greift man auf die Views am besten mit zwei Funktionen zu. Und zwar CDocument::GetFirstViewPosition (MSDN) und CDocument::GetNextView (MSDN) . Zwei Funktionen sind notwendig, weil ein Document im MDI (Multi Document Interface) ja mehrere Views haben kann. Wie du schon vermutet hast, findet die Zuordnung zwischen Document-Klasse und View-Klasse in der Template-Definition statt. Dies ist auf jeden Fall der Ort der Standardzuordnung. Mit einigem Aufwand kann man eine Zuordnung auch anders herstellen. Hoffe, das war das was du wissen wolltest.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.