Solved

MFC splitter Windows

Posted on 1998-11-28
3
965 Views
Last Modified: 2013-11-20
Hi,
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...
Chris
0
Comment
Question by:cpj196
  • 2
3 Comments
 
LVL 1

Accepted Solution

by:
motigust earned 150 total points
ID: 1325413
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
(Vertical)

good luck.


0
 

Author Comment

by:cpj196
ID: 1325414
Thanks!,
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;
            GetClientRect(&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(size.cx-120,size.cy-30),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))
                              {
                                    SetActiveView((CView*)m_wndSplitter.GetPane(1,0));
                                    return TRUE;      
                              }
                                                                        
                        }
                  }
            }
      }
      return FALSE;
}


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

Expert Comment

by:motigust
ID: 1325415
cpj,

To move the horizontal splitter up and down use

int posy = 30; // x position
m_wndSplitter.SetRowInfo(0,posy,posy);

To move the vertical splitter left and right use

int posx = 180; // y position
m_topwndSplitter.SetColumnInfo(0,posx,posx);

Use these funtions after the splitter were created


0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Ownerdraw of the grid button.  A singleton class implentation and usage. Continuing from the fifth article about sudoku.   Open the project in visual studio. Go to the class view – CGridButton should be visible as a class.  R…
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now