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