DigitalRevolution
Mitglied
Hallo ich arbeite an einem SDI Projekt mit VisualStudio 6. Ich möchte dabei zwischen verschiedenen Views wechseln:
CMyMultiviewView und CNextView, wobei CMyMultiviewView das Standartview ist. CNextView ist eine eigene Klasse, abgeleitet von
CView.
Zum wechseln habe ich folgende Funktion geschrieben:
Allerding bekomme ich immer einen Laufzeitfehler. Der Fehler tritt beim Verbinden der Views mit dem Dokument auf.
Was mache ich falsch ?
Bitte um Hilfe!
gruß DR
CMyMultiviewView und CNextView, wobei CMyMultiviewView das Standartview ist. CNextView ist eine eigene Klasse, abgeleitet von
CView.
Zum wechseln habe ich folgende Funktion geschrieben:
C++:
void CMainFrame::SwitchView(void)
{
CView *pOldView;
CView *pNewView;
//pOldView->MessageBox("In Switch View");
//Zeiger Auf aktives View holen
pOldView=GetActiveView();
//Zeiger auf das aktive View retten
m_pCFirstView=pOldView;
//Zweites View erstellen
CRuntimeClass *pCR=RUNTIME_CLASS(CNextView);
m_pCSecondView = static_cast<CView*>(pCR->CreateObject());
//ID des Views ungleich AFX_IDW_PANE_FIRST setzen
m_pCSecondView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW
,rectDefault,this,AFX_IDW_PANE_FIRST+1,NULL);
pNewView = m_pCFirstView;
//IDs austauschen
int nChildID=pNewView->GetDlgCtrlID();
pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pOldView->SetDlgCtrlID(nChildID);
//Zeiger auf das Dokument holen
CDocument *pDoc= pOldView->GetDocument();
//View mit Dokument verbinden
pDoc->AddView(pNewView);
pDoc->RemoveView(pOldView);
//Aktives View dem Rahmenfenster mitteilen
SetActiveView(pNewView);
//Und Viewgröße neu berechnen
RecalcLayout();
//View anzeigen bzw. verbergen
pNewView->ShowWindow(SW_SHOW);
pOldView->ShowWindow(SW_HIDE);
}
Allerding bekomme ich immer einen Laufzeitfehler. Der Fehler tritt beim Verbinden der Views mit dem Dokument auf.

Was mache ich falsch ?

gruß DR