splitter window in drei Bereiche
-
ich habe eine SDI anwendung und möchte mein Fenster in 3 Bereiche Teilen.
ich konnte das Fenster bis jetzt in 2 Bereichen teilen aber ich weiss nicht wie ich den zweiten bereich auch in 2 unterBereiche teile (diesmal in 2 zeilen)ich habe die idee aus das tutorial genommen
http://www.codeproject.com/splitter/splitterwindowtutorial.aspmein code sieht so aus
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen //calculate client size CRect cr; GetClientRect( &cr); if ( !m_mainSplitter.CreateStatic( this, 1, 2 ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; } if ( !m_mainSplitter.CreateView( 0, 0, RUNTIME_CLASS(CSplitterWindowView), CSize(cr.Width()/8, cr.Height()), pContext ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; } if ( !m_mainSplitter.CreateView( 0, 1, RUNTIME_CLASS(CSplitterWindowView), CSize(cr.Width()*(3/4), cr.Height()), pContext ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; } /*if ( !m_mainSplitter.CreateView( 1, 1, RUNTIME_CLASS(CSplitterWindowView), CSize(cr.Width()*(3/4), cr.Height()/2), pContext ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; }*/ m_bInitSplitter = TRUE; return TRUE; }
-
if (!m_mainSplitter.CreateStatic(this, 1, 2)) { TRACE0("Failed to CreateStaticSplitter\n"); return FALSE; } if (!m_wndSplitterLR.CreateView(0, 1, RUNTIME_CLASS(CSplitterWindowView), CSize(0, 0), pContext)) { TRACE0("Failed to create first pane\n"); return FALSE; } m_mainSplitter.SetColumnInfo(0, 200, 0); if (!m_mainSplitter2.CreateStatic(&m_mainSplitter, 2, 1, WS_CHILD | WS_VISIBLE, mainSplitter.IdFromRowCol(0, 0))) { TRACE0("Failed to CreateStaticSplitter\n"); return FALSE; } if (!m_mainSplitter2.CreateView(0, 0, pContext->m_pNewViewClass, CSize(0, 200), pContext)) { TRACE0("Failed to create second pane\n"); return FALSE; } if (!m_mainSplitter2.CreateView(1, 0, RUNTIME_CLASS(CSplitterWindowView), CSize(0, 0), pContext)) { TRACE0("Failed to create third pane\n"); return FALSE; }
Hoffe mal das das funzt.. ist nicht getestet
-
hallo
danke für die Antwort
ich habe noch eine Frage: brauche ich insgesamt 3 CSplitterWnd Objekte ?
ich habe den code jetzt so gebastelt aber der erste Bereich wird geteilt(die erste Spalte) und nicht der zweite Bereich was eigentlich gewünscht ist.BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen //calculate client size CRect cr; GetClientRect( &cr); if ( !m_mainSplitter.CreateStatic( this, 1, 2 ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; } if ( !m_mainSplitter.CreateView( 0, 1, RUNTIME_CLASS(CSplitterWindowView), CSize(cr.Width()/8, cr.Height()), pContext ) ) { MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); return FALSE; } /*if (!m_wndSplitterLR.CreateView(0, 1, RUNTIME_CLASS(CSplitterWindowView), CSize(0, 0), pContext)) { TRACE0("Failed to create first pane\n"); return FALSE; } m_mainSplitter.SetColumnInfo(0, 200, 0); */ if (!m_mainSplitter2.CreateStatic(&m_mainSplitter, 2, 1, WS_CHILD | WS_VISIBLE, m_mainSplitter.IdFromRowCol(0, 0))) { TRACE0("Failed to CreateStaticSplitter\n"); return FALSE; } if (!m_mainSplitter2.CreateView(0, 0, pContext->m_pNewViewClass, CSize(0, 200), pContext)) { TRACE0("Failed to create second pane\n"); return FALSE; } if (!m_mainSplitter2.CreateView(1, 0, RUNTIME_CLASS(CSplitterWindowView), CSize(0, 0), pContext)) { TRACE0("Failed to create third pane\n"); return FALSE; } m_bInitSplitter = TRUE; return TRUE; }
-
CSplitterWnd - CreateStatic
CSplitterWnd - CreateViewGuck dir die mal an... dann guck mal ganzgenau bei den Paramteren Col und Row... das sollte dir vllt weiterhelfen.. damit kannst de das nähmlich einstellen...