起因:多文档程序为了使用两个文档模板,其用来实时测量;其二用于数据处理显示。两个模板分别对应不同的子框架类:CChildFrame和CDispChildFrame。已有的CChildFrame是派生自CMDIChildWndEx类,考虑到实际需求CDispChildFrame也应派生自CMDIChildWndEx类。经尝试,CDispChildFrame如果派生于CMDIChildWnd或者CMDIChildWndSplitter,运行程序ok,但是新建的文档无法实现标签页显示。
解决方案:
1、创建CDispChildFrame类,派生于CMDIChildWndEx类
2、添加两个文档模板对象
CMultiDocTemplate* pDocTemplate_meas;
pDocTemplate_meas = new CMultiDocTemplate(IDR_MulParameterTYPE,
RUNTIME_CLASS(CMulParameterDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CMulParameterView));
if (!pDocTemplate_meas)
return FALSE;
AddDocTemplate(pDocTemplate_meas); //测量文档模板
CMultiDocTemplate* pDocTemplate_show;
pDocTemplate_show = new CMultiDocTemplate(IDR_MulParameterTYPE,
RUNTIME_CLASS(CMulParameterDoc),
RUNTIME_CLASS(CDispChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CMulParameterView));
if (!pDocTemplate_show)
return FALSE;
AddDocTemplate(pDocTemplate_show); //显示文档模板
3、运行程序,选择第二项
程序报错:出现“创建空文档失败”的错误
4、报错原因:CDispChildFrame类创建时宏定义出现问题,需要修改
DECLARE_DYNAMIC(CDispChildFrame) 修改为 DECLARE_DYNCREATE(CDispChildFrame)
IMPLEMENT_DYNAMIC(CDispChildFrame, CMDIChildWndEx) 修改为 IMPLEMENT_DYNCREATE(CDispChildFrame, CMDIChildWndEx)