文档视图结构解析-文档与视图交互
需积分: 0 198 浏览量
更新于2024-08-19
收藏 755KB PPT 举报
"这篇文档主要介绍了VC++中的文档视图结构,特别强调了文档与视图的相互作用,以及如何通过`CView::GetDocument`和`CDocument::UpdateAllViews`函数实现通信。文档视图结构是MFC(Microsoft Foundation Classes)库中的核心设计模式,用于构建用户界面。它将数据(文档)与显示数据的方式(视图)分离,使得应用程序可以有多个视图同时查看和编辑同一份文档。"
在MFC中,文档视图结构是一个关键的概念,它分为以下几个部分:
7.1 文档模板
文档模板(Document Template)是连接应用程序中的文档类、视图类和框架窗口类的桥梁。它负责创建、管理和存储这些对象。例如,在代码示例中,`CMultiDocTemplate` 被用来创建一个多文档模板,关联了`CEx_MDIDoc`(文档类)、`CChildFrame`(MDI文档窗口类)和`CEx_MDIView`(视图类)。`InitInstance`方法中的`AddDocTemplate`用于注册这个模板,以便后续使用。
7.1.1 文档模板类
`CMultiDocTemplate` 类是文档模板的基础,用于处理不同类型的文档。通过运行时类(RUNTIME_CLASS)宏,你可以指定与模板相关的具体类。
7.1.2 文档模板字串资源
这些字符串资源用于设置文档类型、标题等信息,可以在资源编辑器中直接修改,或通过应用程序创建向导的高级选项指定。
7.1.3 使用多个文档类型
演示了如何创建和配置多个文档类型的步骤,包括在StringTable资源中修改 IDR_MAINFRAME 字符串。
7.4 文档视图结构
7.4.1 文档与视图的相互作用
`CView::GetDocument` 函数允许视图访问与其相关联的文档。通常,这是一个安全的内联函数,确保返回的指针指向正确的文档类。`GetDocument` 调用会执行派生类中的实现,返回指向用户派生文档类的指针。
7.4.2 `CDocument::UpdateAllViews`
`UpdateAllViews` 是一个重要的文档成员函数,用于通知所有关联的视图进行更新。当指定的视图(`pSender`)之外的其他视图需要刷新时,会调用它们的`OnUpdate`函数。这使得在文档数据更改时,所有视图都能同步更新显示。
在MFC的文档/视图架构中,`CDocument`对象保存数据,`CView`对象负责显示数据,并且两者通过上述的`GetDocument`和`UpdateAllViews`函数保持通信。这种设计模式使得可以灵活地创建具有多个视图的复杂用户界面,同时保持数据和显示的分离,提高了代码的可维护性和复用性。
2007-11-28 上传
2024-05-08 上传
2021-12-01 上传
2010-11-29 上传
2022-09-22 上传
2022-06-18 上传
劳劳拉
- 粉丝: 21
- 资源: 2万+
最新资源
- 2代身份证识别方案_智能家居物联网开发PCB设计方案.rar
- 智能机器人创意竞赛 主题一 实物组.zip
- 基于ros的人脸追踪,下位机采用stm32,舵机云台
- 某驴网发帖全家桶,有安卓有PC-易语言
- sentinel-datasource-nacos-1.8.0.jar中文-英文对照文档.zip
- Matlab_simulink_it_radarmatlab_radarsimulink_radar_matlabsimulin
- poch_app:WWC的申请
- material-ui-course-project-manager:这是Udemy课程“使用Material-UI和ReactJS实现高保真设计”中项目2的最终代码。
- 行业文档-设计装置-一种直接发生式太阳能空调系统.zip
- 1ndiList:侦听自定义WordList生成器
- 基于STM32的IAP升级程序(Bootloader)
- JavaDocumentProject
- mybatis-spring-boot-autoconfigure-2.2.0.jar中文-英文对照文档.zip
- 灵匣网姓名测试系统 1.0
- 行业文档-设计装置-一种直接测定早龄期混凝土与钢筋粘结性能的测试装置及测定方法.zip
- 2.4G无线数据传输GPS无线定位器_智能家居物联网开发PCB设计方案.rar