Hallo zusammen,
ich hebe folgendes Problem. Ich habe nach langer Zeit es entlich geschafft meine Views in der SDI Anwendug zutaschen. Meine Schwirigkeit ist jetzt die Tollbar oder die Menüleiste zur der jewaligen View zu ändern. Die Änderung der Views finden in einer Methode (SwitchView()) in der CFrameclasse statt. Wie kann ich jetzt dem Fenster sagen das er doch die Tollbar oder die Menüleiste ändern soll ?
ich hebe folgendes Problem. Ich habe nach langer Zeit es entlich geschafft meine Views in der SDI Anwendug zutaschen. Meine Schwirigkeit ist jetzt die Tollbar oder die Menüleiste zur der jewaligen View zu ändern. Die Änderung der Views finden in einer Methode (SwitchView()) in der CFrameclasse statt. Wie kann ich jetzt dem Fenster sagen das er doch die Tollbar oder die Menüleiste ändern soll ?
Code:
void CMainFrame::SwitchView()
{
CView *pOldView;
CView *pNewView;
// Zeiger auf aktives View holen
pOldView = GetActiveView();
// Falls dies der erste Aufruf der Methode ist, ist das erste View
// das aktive View und der Zeiger darauf muss noch gerettet werden
if (m_pCFirstView == NULL)
m_pCFirstView = pOldView;
// Falls zweites View noch nicht erstellt
if (m_pCSecondView == NULL)
{
CRuntimeClass *pCR = RUNTIME_CLASS(CSecondVIew);
m_pCSecondView = static_cast<CSecondVIew*>(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);
}
if (m_pCFourthView == NULL)
{
CRuntimeClass *pCR = RUNTIME_CLASS(CFourthView);
m_pCFourthView = static_cast<CFourthView*>(pCR->CreateObject());
// ID des Views ungleich AFX_IDW_PANE_FIRST setzen!
m_pCFourthView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,
this,AFX_IDW_PANE_FIRST+1,NULL);
}
// Neues aktives View bestimmen
if (m_bFirstViewActive == 1)
pNewView = m_pCFirstView;
if (m_bFirstViewActive == 2)
pNewView = m_pCSecondView;
if (m_bFirstViewActive == 3)
pNewView = m_pCFourthView;
// Aktives View muss die ID AFX_IDW_PANE_FIRST besitzen
// IDs deshalb austauschen
int nChildId = pNewView->GetDlgCtrlID();
pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pOldView->SetDlgCtrlID(nChildId);
// Zeiger auf Dokument holen
CDocument *pDoc = pOldView->GetDocument();
// View mit Dok verbinden
if(pOldView != pNewView)
{
pDoc->AddView(pNewView);
pDoc->RemoveView(pOldView);
}
// Aktives View dem Rahmenfenster mitteilen
SetActiveView(pNewView);
// Und Viewgroesse neu berechnen lassen
RecalcLayout();
// View anzeigen bzw. verbergen
pNewView->ShowWindow(SW_SHOW);
pOldView->ShowWindow(SW_HIDE);
// m_bFirstViewActive = !m_bFirstViewActive;
}