文档视图结构解析-文档与视图交互
需积分: 0 181 浏览量
更新于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 上传
劳劳拉
- 粉丝: 20
- 资源: 2万+
最新资源
- C++ Qt影院票务系统源码发布,代码稳定,高分毕业设计首选
- 纯CSS3实现逼真火焰手提灯动画效果
- Java编程基础课后练习答案解析
- typescript-atomizer: Atom 插件实现 TypeScript 语言与工具支持
- 51单片机项目源码分享:课程设计与毕设实践
- Qt画图程序实战:多文档与单文档示例解析
- 全屏H5圆圈缩放矩阵动画背景特效实现
- C#实现的手机触摸板服务端应用
- 数据结构与算法学习资源压缩包介绍
- stream-notifier: 简化Node.js流错误与成功通知方案
- 网页表格选择导出Excel的jQuery实例教程
- Prj19购物车系统项目压缩包解析
- 数据结构与算法学习实践指南
- Qt5实现A*寻路算法:结合C++和GUI
- terser-brunch:现代JavaScript文件压缩工具
- 掌握Power BI导出明细数据的操作指南