3.1 MFC多文档多视图实现
a) 新建一个MFC多文档工程;
b) 新建三个类CMyDoc : public CDocument、CMyView : public CView、CMyChildFrame : public CMDIChildWnd;
c) 添加菜单资源IDR_MENU_MY、如果每个子窗口需要工具栏,则添加工具栏IDR_TOOLBAR_MY;
d) 在CXXApp里添加变量:
CMultiDocTemplate* pDocTemplate; //管理文档一
CMultiDocTemplate* pMyDocTemplate; //管理文档二
e) 后台CXXApp::InitInstance()里添加类似这样的代码:
//文档一
pDocTemplate = new CMultiDocTemplate(IDR OgreMDITYPE,/*工程资源ID*/
RUNTIME_CLASS(COgreMDIDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(COgreMDIView));
//文档二
pMyDocTemplate= new CMultiDocTemplate(IDR_MENU_MY, /*新加文档的菜单ID*/
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMyChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMyView));
注意:包含对应的头文件!
f) 每个子窗口添加自己的工具栏,类似下面代码:
int CMyChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBAR_MY))
{
return -1; // fail to create
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
----------------到现在运行程序,就可以看到MFC多文档多视图的效果了-------------------------