Toolbar/Menüleiste SDI

kerian

Erfahrenes Mitglied
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 ?
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;
}
 
Oh man, hab schon die Lösng :-(
Code:
    if (m_bFirstViewActive == 1)
       { 
          pNewView = m_pCFirstView;
          m_wndToolBar.LoadToolBar(IDR_TOOLBAR1);
      }

Vielleicht hat jemand noch eine andere Lösung zur Umschaltung der Views im gleichen Fenster!
 

Neue Beiträge

Zurück