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