Variable splitter views

Here is a class that implements an MDI Frame (CMDIChildWnd) which
shows a number of variable views (up to 4 views).

The Class (CBaseVarFrame) is reusable.

It implement four new commands :

ID_SPLITTER_NESSUNO (Just Default View,no splitter)  // status = 0
ID_SPLITTER_UNO ( 2 Views ,Default View on the left pane,1 view in the right pane)  // status = 1
ID_SPLITTER_DUE ( 3 Views,Default View on the left pane,2 views in the right pane)  // status = 2
ID_SPLITTER_TREE (4 Views,Default View on the left pane,3 views in the right pane) // status = 3

To use the class you have two choices:

A) method 1

derive your class

class CMYFrame : public CBaseVarFrame
// use a static array of your runtime views
static    CRuntimeClass* myClass[3] =
{RUNTIME_CLASS(CView1),RUNTIME_CLASS(CView2),RUNTIME_CLASS(CView3)};

// Overrides the method

void CMYFrame::OnConfigViews()
{
  ConfigViews(myClass,  // array of RuntimeClass of Views
                            3,  // number of max of Views on the right pane
                            0); // initial status (see above)
}

B) method 2

Use the configurable class CBaseVariableFrame

which allows you to use it directly ,just put

this code in your application methos InitInstance() :

CMultiDocTemplate* pDocTemplate;
  pDocTemplate = new CMultiDocTemplate(
  IDR_VARSPLTYPE,
  RUNTIME_CLASS(CVarSplitDoc),
  RUNTIME_CLASS(CBaseVariableFrame), // custom MDI child frame
  RUNTIME_CLASS(CVarSplitView));       // your default views (left pane)
AddDocTemplate(pDocTemplate);

// TO DO : config your frame
CBaseVariableFrame::SetConfiguration(myClass,3,0);
// END CONFIG

In my example I use the second method

BaseVarFrame.cpp BaseVarFrame.h    (base class)
ChildFrm.cpp ChildFrame.h   (configurable base class)

Download Source 58KB

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read