1.创建单文档Demo
在资源视图Dialog中插入两个Dialoge,Style设置为child,Border设置为chill。为两个对话框分别添加类,基类为CPropertyPage,类名CP1,CP2。在P1的头文件添加 #include "resource.h"
2.在类视图中在Demo中添加类,基类为CPropertySheet,类名为CSheet。在Sheet.h头文件中包含P1.h,P2.h。同时加入public:
CP1 m_p1;
CP2 m_p2;
在Sheet.cpp中,添加如下代码
3.在类视图中在Demo中添加类,基类为CFormView,类名为CLeftView。LeftView.h中包含Sheet.h。添加public:
virtual void OnInitialUpdate();
CSheet s;
在LeftView.cpp中包含MainFrm.h。对s初始化
同时添加如下代码
void CLeftView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
CMainFrame* pMainFrame=(CMainFrame*)GetParentFrame();
s.Create(this,WS_CHILD|WS_VISIBLE|WS_EX_CONTROLPARENT);
s.SetWindowPos(NULL,0,0,400,800,SWP_NOSIZE|SWP_NOACTIVATE);
} //该代码是放置Page同时弹出属性框
4.在MainFrm.h中包含LeftView.h。添加public:
CSplitterWnd Splitter;
在MainFrm.cpp中包含三个头文件#include "DemoDoc.h"
#include "DemoView.h"
#include "LeftView.h"
对CMainFrame类中的OnCreatClient进行重载,添加如下代码
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
Splitter.CreateStatic(this,1,2);
Splitter.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(400,150),pContext);
Splitter.CreateView(0,1,RUNTIME_CLASS(CDemoView),CSize(400,0),pContext);
SetActiveView((CDemoView*)Splitter.GetPane(0,1));
return true;
//这个代码是将单文档分割成两部分
}
结果如下: