003
05.04.2003, 14:00 Uhr
Volle
|
Hi zusammen,
ich habe auch mal ein Projekt angefangen, in dem ich das gebraucht habe. Allerdings wurde das nie vollendet .
Aber so problematisch ist das nicht. Ich habe es mir gerade nochmal angeschaut. CSplitterWnd bietet dir ja die Memberfunktionen, um die Views zu zerstören und wieder anzuzeigen. Also musst du nur die "alte" Ansicht rauswerfen und mit dem entsprechenden CreatContext wieder eine neune erzeugen.
Aber das ist sicher nicht DAS Thema für einen kompletten Newbie. Aber man kommt schon durch.
Die folgende Funktion tauscht bei mir die Views aus. Ich hoffe du kommst klar damit:
C++: |
void CPaneContainer::SetView(enum SubViews aSubView, bool saveViewPointer /*= true*/) { CRuntimeClass* subView = GetPaneRTClass(aSubView);
if (subView) { CCreateContext pCC; pCC.m_pCurrentDoc = GetDocument(); pCC.m_pNewViewClass = subView; pCC.m_pLastView = this; (CView*)m_splitter.GetPane(1,0)->DestroyWindow(); m_splitter.CreateView(1,0, subView, CSize(0,0), &pCC); m_splitter.RecalcLayout(); //Update an Views senden um OnInitialUpdate aufzurufen CMVApp* pApp = (CMVApp*)AfxGetApp(); POSITION pos = pApp->GetFirstDocTemplatePosition(); CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate(pos); pDocTemplate->InitialUpdateFrame((CMainFrame*)AfxGetMainWnd(), GetDocument());
if (saveViewPointer) pVRing->Insert(aSubView); } }
|
Grüße, Volle.
P.S.: Das ist wie gesagt Code, der nicht fertig geschrieben wurde. Das musste ich jetzt noch erwähnen, nachdem ich ihn selbst nochmal ein bisschen genauer angeschaut habe. Das ist ja furchtbar ... Dieser Post wurde am 05.04.2003 um 14:02 Uhr von Volle editiert. |