- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 多文档应用程序 多文档程序可在多个窗口打开多个文档,Visual C++开发环境就是一个典型的多文档程序,如图所示。在实际开发中,根据需要决定采用单文档还是多文档模式,若需要同时显示不同类型的文档,应采用多文档模式,一般情况下,单文档程序已经可以满足功能需求。 第10章 多文档应用程序 10.1 了解生成类 使用MFC AppWizard生成的多文档程序,自动生成6个类,其中CMainFrame、CChildFrame、App、Doc、View五个类是多文档程序的基础支架,CMainFrame类负责程序主窗口的框架显示,包括子框架窗口、工具栏、状态栏等元素,CChildFrame类负责多文档窗口的子框架窗口,其父窗口为主框架窗口,CChildFrame类和Doc、View类共同构成一个文档模板组合。 【范例10-1】新建一个多文档工程名为Mdi071,了解AppWizard自动生成的几个类。 10.2 类联系方式 在实际应用中,经常需要在多个类之间交换数据,调用另一个类中的函数,框架提供一系列函数用于多个类之间的交互(以多文档工程Mdi071为例)。 (1)所有类中获取App类指针 CWinApp* pApp=AfxGetApp(); CMdi071App* pMyApp=( CMdi071App*)pApp; (2)所有类中获取CMainFrame类指针 CMainFrame* pFrame=(CMainFrame*)AfxGetMainWnd(); CMainFrame* pFrame=(CMainFrame*)(AfxGetApp()-m_pMainWnd); 10.2 类联系方式 (3)获取当前活动的MDI子窗口指针 CMainFrame* pMainFrame=(CMainFrame*)AfxGetMainWnd(); CChildFrame* pActiveChild=(CChildFrame*)pMainFrame-MDIGetActive(); 多文档程序可以有多个MDI子窗口,但只有一个活动子窗口,MDIGetActive函数获取当前活动的子窗口指针,格式如下: CMDIChildWnd* CMDIFrameWnd::MDIGetActive(BOOL* pbMaximized = NULL) const 参数: pbMaximized 输出参数,若当前活动子窗口为最大化,设为TRUE,否则为FALSE。 返回值:活动子窗口的指针。 10.2 类联系方式 (4)获取活动视图、文档的指针 CMainFrame* pMainFrame=(CMainFrame*)AfxGetMainWnd(); CChildFrame* pActiveChild=(CChildFrame*)pMainFrame-MDIGetActive(); CMdi071View* pActiveView=(CMdi071View*)pActiveChild-GetActiveView(); CMdi071Doc* pActiveDoc=(CMdi071Doc*)pActiveChild-GetActiveDocument(); 10.2 类联系方式 先获取活动子窗口的指针,再调用GetActiveView函数获取活动视图,调用GetActiveDocument函数获取活动文档。 注:GetActiveView、GetActiveDocument函数返回的指针类型进行转换时,应先使用GetRuntimeClass函数获取运行时的类信息,根据类实际信息,再强制转换为对应类型。 10.3 多文档视图 多文档程序的优势在于能够同时显示多种类型的文档,自动生成的MDI程序只有一个文档模板,可手动添加视图类、文档类,实现多种类型文档的创建、显示、编辑。MFC框架已经完成多文档程序的大部分工作,只需要在框架基础上,添加新增功能,即可实现强大的MDI程序。 10.3.1 添加文档模板 【范例10-2】在多文档工程Mdi071基础上,添加视图、文档类,构建新的文档模板,实现两种类型文档的新建、显示、编辑操作。 10.3.2 更新视图 融智技术学院
文档评论(0)