我不一定要寻求代码帮助,而是寻求一个高级答案,以便我自己研究解决方案。 基本上,我有一个包含多个文档及其视图的MDI应用程序,我希望所有视图以选项卡的形式在我拥有的一个子框架中打开。 问题是我的子框架在OnCreateClient方法中由一个拆分器窗口静态配置,该拆分器窗口具有两个视图(窗体和列表视图)。 我想将其保留为启动应用程序时出现的默认选项卡。
我有自己的文档模板的第三个视图(editview),我希望能够将其作为单独的选项卡打开。 我将有其他这样的观点。 解决此问题的最佳方法是什么?
我是否需要为每个视图创建单独的子框架? 如果创建单独的子框架,我会失去“标签”功能吗?
还是我必须修改子框架的OnCreateClient方法以测试哪个文档模板是当前文档模板并为该文档模板创建视图? 我想知道你们中一些经验丰富的程序员是如何做到的或愿意做到的。
谢谢。
万一这对其他人有所帮助,从我收集的数据来看,完全可以接受创建一个从CChildFrame派生的新子框架类,或者仅将其用作新视图的框架。 doc,框架和视图将通过initInstance方法添加到doc模板中。 例如,假设您有一对三人组合(2个文档,2个视图,2个框架):
pDocTemplate = new CMultiDocTemplate(IDR_testappTYPE,
RUNTIME_CLASS(CMydoc1),
RUNTIME_CLASS(CMyframe1),
RUNTIME_CLASS(CMyview1));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
pDocTemplate2 = new CMultiDocTemplate(IDR_testappTYPE,
RUNTIME_CLASS(CMydoc2),
RUNTIME_CLASS(CMyframe2),
RUNTIME_CLASS(CMyview2));
if (!pDocTemplate2)
return FALSE;
AddDocTemplate(pDocTemplate2);
如果您添加另一个具有不同子框架的三重奏,因为此新框架不使用上述分离器,则可以这样做。
pDocTemplate3 = new CMultiDocTemplate(IDR_mditest3TYPE,
RUNTIME_CLASS(CMydoc), //same doc
RUNTIME_CLASS(CMyframeWithoutSplitters), //new frame
RUNTIME_CLASS(CMyview3)); //new view
if (!pDocTemplate3)
return FALSE;
AddDocTemplate(pDocTemplate3);