Solved

Changing view in a static splitterView

Posted on 2000-02-22
7
687 Views
Last Modified: 2013-11-20
I have  a 3 way splitter window with this configuration.

           | View 2
 View1  |---------
           | View 3

I create it with CreateStatic().

Thanks to an action on view1, I want to change view2 (from ClistView to CFormView, for example).
Unfortunatly 'from MSDN CSplitterWnd::CreateView ' :

'All panes of a static splitter window must be created before the framework displays the splitter.'

So how can I change it dynamicly?

Thanks for help in advance
0
Comment
Question by:rgrand
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 3

Expert Comment

by:V_Bapat
ID: 2545887
Check out Q196832 in Microsoft knowledge base http://support.microsoft.com/support/kb/articles/Q196/8/32.ASP


This article demonstrates how to use a static splitter window in a traditional SDI document-view architecture. The article shows how to design an application that can switch between a single view and a splitter window that can embed as many panes as necessary.

You can easily expand the code to support static splitter windows with different numbers of panes, depending on some run-time conditions.

0
 
LVL 3

Expert Comment

by:V_Bapat
ID: 2545909
You can find a few articles on CodeGuru site http://codeguru.developer.com/splitter/index.shtml
0
 
LVL 3

Accepted Solution

by:
V_Bapat earned 100 total points
ID: 2545950
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 12

Expert Comment

by:migel
ID: 2546469
Hi!
Also you can find some info in the PAQ:
http://www.experts-exchange.com/jsp/qShow.jsp?ta=mfc&qid=10201445 
0
 
LVL 4

Expert Comment

by:captainkirk
ID: 2547085
1) derive a splitter window class from CSplitterWnd and create a variable of that type in your main frame

2) create the new view:
CRuntimeClass* pView = RUNTIME_CLASS(YourNewViewClass);
int nView = nSomeViewID;
CView* pNewView = (CView*)pView->CreateObject();

if (pNewView)
{
    pNewView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, pParentWnd, nView, pContext);
      
pNewView->OnInitialUpdate();
} // end if


3) change to the new view:

UINT CYourSplitterWnd::ChangeView(CView* pNewPaneView, int row, int col, UINT nOldViewID, bool bFirstView)
{
     UINT nPaneViewID = IdFromRowCol(row, col);
     UINT nNewViewID  = pNewPaneView->GetDlgCtrlID();

     if (nNewViewID == 0)
     {
      return 0;
     } // end if
     else if (nNewViewID != (UINT) m_nCurrentViewID)
     {
      m_nCurrentViewID = nNewViewID;

      // set new view active and show it...
      CFrameWnd* pFrameWnd = GetParentFrame();

      pFrameWnd->SetActiveView(pNewPaneView);
      pNewPaneView->ShowWindow(SW_SHOW);
            
      // get old view, hide it, and remove from the splitter...
      CView* pOldPaneView = (CView*)GetDlgItem(nPaneViewID);

      if (pOldPaneView)
      {
            pOldPaneView->ShowWindow(SW_HIDE);
            pOldPaneView->SetDlgCtrlID(nOldViewID);
      } // end if

      // add the new view to the splitter...
      if (pNewPaneView->GetParent() != this)
            pNewPaneView->SetParent(this);

      pNewPaneView->SetDlgCtrlID(nPaneViewID);

      if (!bFirstView)
            RecalcLayout();
      } // end else
      
      return nNewViewID;
} // end ChangeView()


I belive that's the basics of it...
hope that helps...
0
 
LVL 8

Expert Comment

by:VinExpert
ID: 2562182
Hi,

Have the pointers of the CSplitterWnd and create them and display them. When U want to change it, delete the pointers so that view goes off and display the fresh view with the required change freshly. That should work though it is a work around method.

I had the similar problem, on some action, the requirement was to delete the view2 and show view1 abd view3 only. There I have followed the same way. I still have the sample of it too.

Try it out.

VinExpert
0
 

Author Comment

by:rgrand
ID: 2622639
all the information helps me to do my splitter.

Thanks, with some late. :)
0

Featured Post

[Webinar] How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

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

Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
Introduction: The undo support, implementing a stack. Continuing from the eigth article about sudoku.   We need a mechanism to keep track of the digits entered so as to implement an undo mechanism.  This should be a ‘Last In First Out’ collec…
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.
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …

707 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