[Frage] SDI Frame mit drei Splittern



  • Hallo Gemeinde,

    ich habe folgendes Problem: ich habe ein SDI erstellt und möchte drei Panes erstellen, welche wie folgt aussehen sollen:
    ______________
    |......|................|
    |..1..|.................|
    ||...3............|
    |......|................|
    |..2..|.................|
    ||
    __|

    So nun mein Problem: Wie müssen denn die Parameter für folgenden code sein ( CreateStatic usw.) - habe da schon rumexperementiert....

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
    m_SplitterWindow.CreateStatic( this, 2, 2 ); 
    m_SplitterWindow.CreateView( 0, 0, RUNTIME_CLASS(CSplitterLeftViewTop),
    	CSize(150,cr.Height()/2), pContext );
    m_SplitterWindow.CreateView( 0, 1, RUNTIME_CLASS(CSplitterRight),
    	CSize(150, cr.Height()/2), pContext );
    m_SplitterWindow.CreateView( 1, 0, RUNTIME_CLASS(CSplitterLeftViewBottom),
    	CSize(150, cr.Height()/2), pContext );
    m_SplitterWindow.CreateView( 1, 1, RUNTIME_CLASS(CSplitterRight),
    	CSize(150, cr.Height()/2), pContext );	// der vierte muss vielleicht weg?
    
    return TRUE;
    }
    

    Der Code hier oberhalb funzt - doch leider sieht das so aus:

    ______________
    |......|................|
    |..1..|.......3..........|
    |___|____|
    |......|................|
    |..2..|.......4..........|
    ||
    |

    Kann mir jemand helfen, dass es so ausschaut, wie ganz oben gezeichnet.

    Ein Idee von mir war, dass ich in der MainFrame-Klasse einen Splitter erstelle und dass der linke Frame wieder ein Splitter ist. Das Problem ist nur dass es bei dem neuen linken Frame keine LinkerFrame::OnCreateClient(...) existiert. Wenn ich die Methode erstelle, dann wird diese Methode gar nicht ausgeführt.

    Kann man denn nur gerade Anzahl von Reihen und Spalten zeichnen?

    Danke Euch allen!



  • erstelle einen doppelten splitter und teile diesen links nochmal:

    // ausn kopf ungetestet

    m_wndSplitterMain.CreateStatic(this, 2, 1);
        m_wndSplitterMain.CreateView(1, 0, RUNTIME_CLASS(CRightView), size, pContext);
    
        m_wndSplitterLeft.CreateStatic(&m_wndSplitterMain, 0, 2, WS_CHILD|WS_VISIBLE|WS_BORDER, m_wndSplitterMain.IdFromRowCol(1, 0));
        m_wndSplitterLeft.CreateView(0, 0, RUNTIME_CLASS(CLeftTopView), size, pContext);
        m_wndSplitterLeft.CreateView(0, 1, RUNTIME_CLASS(CLeftBottomView), CSize(0, 0), pContext);
    
    --------------
    |     |      |
    |     |      |
    |     |      |
    --------------
    
    + (links)
    
    --------------
    |            |
    --------------
    |            |
    --------------
    
    =
    
    --------------
    |     |      |
    -------      |
    |     |      |
    --------------
    


  • Danke,
    werd gleich ausprobieren.

    Manchmal steht man aber auch aufm Schlauch....


Anmelden zum Antworten