3.1如何在我的应用程序中增加一个 新类型 的 视图 或 框架窗口?

      毫无疑问,AppWizard和ClassWizard是MFC开发人员经常用的的工具,但是它们对某些简单的工作没有很大的帮助,例如在应用程序中增加另外一种类型的视图。尽管在MFC编程中,这是个基础任务,但是仍然要求很好的理解文档、文档模板(以及相关资源)、视图、视图框架窗口之间的联系。

      CWinApp的InitInstance函数已经注册了它的默认文档模板,假设已经创建了一个新的视图类CNewDrawView,现在要把该视图类与应用程序链接起来。

1、创建 具有一个新的 文档模板资源ID 的资源,其ID为IDR_NEWDRAWTYPE。

2、在应用程序类中增加一个新的CMultiDocTemplate类型的指针成员变量,CMultiDocTemplate* m_ptNewDrawView;

3、在应用程序的InitInstance()函数中创建新的文档模板对象,该对象涉及IDR_NEWDRAWTYPE资源、CNewDrawView类。程序 清单如下所示:

m_ptNewDrawView=new CMultiDocTemplate(IDR_DRAWFORMTYPE,

                                                                         RUNTIME_CLASS(CDrawDoc),

                                                                         RUNTIME_CLASS(CChildFrame),

                                                                         RUNTIME_CLASS(CNewDrawView));

AddDocTemplate(m_ptNewDrawView);

4、现在就可以使用新文档模板了。使用EkCreateNewWindow()函数来编写程序打开一个新的窗口,该窗口使用了m_ptNewDrawView文档模板。在“3.3如何编程打开一个基于 特殊文档模板 的视图”中讨论了EkCreateNewWindow()函数。如果打算在应用程序中增加一个新类型的框架窗口(),则遵循相同的步骤,只需要在第三步构造新的文档模板时,传递新类型的框架窗口,而不是标准的CChildFrame类。

      当用户选择相应的菜单命令或工具栏按钮时,就可以调用EkCreateNewWindow()函数来打开一个新的窗口,我选择在文档类中处理这些命令,对该技术而言,查找与新视图关联的文档是微不足道的。

void CDrawDoc::OnWindowNewformview() 

{

      EkCreateNewWindow(theApp.m_ptDrawFormView , this );

}

附加注释:

如果希望CNewDrawView类具有特殊的行为,即显示新的菜单命令,那么可以把这些命令增加到在第一步中创建的IDR_NEWDRAWTYPE菜单资源中。MFC自动的交换菜单并跟踪活动视图。

你可能感兴趣的:(编程,框架,Class,文档,mfc)