MFC splitter Windows

When a splitter window is created, MFC seems to only like it when you specify a view for EVERY column and row, else you get an assertion.  I want to be able to have a single static splitter window with 2 columns in the top row and one column in the bottom row (this is for an IRC client), but at the moment i can only have it so that there are 2 columns in both the top and bottom rows.
Anyone know How I get around this? (100)
Thanks a lot...
Who is Participating?
motigustConnect With a Mentor Commented:
You need to splitters here:

1. The first splitter splits the window Horizontaly (one at the
top and one at the bottom)

2. The second splitter splits the upper window vertically.

In order to do that:
1. Create a regular horizontal splitter (Using the wizard)
2. Using the upper view of that splitter create another one

good luck.

cpj196Author Commented:
This was very helpful, and i now have 3 panes as required.  Although, i am still having probelms with the initial sizing when the window is created.  I have a size structure that contains the window size by getting the client rect area.  Ideally, when the application loads, i want the bottom pane  (for typing into) to be about 30 pixels high, the top left pane (for receiving IRC messages) to be y - 30 pixels high and x - 100 pixels wide, and the top right pane (for displaying usernames of users on current channel) to be y-30 pixels high and 100 pixels wide.
The code i am using is not working, creating all the panes but then making the bottom one (typing into pane) take up the entire window!
I am using the following code...

BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT,
      CCreateContext* pContext)
      if (m_wndSplitter.CreateStatic(this,2,1)) // OK
            CRect rect;
            CSize size = rect.Size();
            if (m_topwndSplitter.CreateStatic(&m_wndSplitter,1,2, WS_CHILD | WS_VISIBLE | WS_BORDER, m_wndSplitter.IdFromRowCol(0, 0)))
                  if (m_topwndSplitter.CreateView(0,0,RUNTIME_CLASS(CChatView),CSize(,,pContext))
                        if (m_topwndSplitter.CreateView(0,1,RUNTIME_CLASS(CNameView),CSize(0,0), pContext))
                              if (m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CSendView),CSize(0,0),pContext))
                                    return TRUE;      
      return FALSE;

Wot am i doing wrong! ?
Please help! :-)
Thanks again for the previous response,
Chris J

To move the horizontal splitter up and down use

int posy = 30; // x position

To move the vertical splitter left and right use

int posx = 180; // y position

Use these funtions after the splitter were created

All Courses

From novice to tech pro — start learning today.