MFC程序设计解析:Scribble范例与Document/View架构

需积分: 0 3 下载量 37 浏览量 更新于2024-10-06 收藏 5.63MB PDF 举报
"深入浅出MFC_2e_非扫描版_.f侯捷 可以复制 粘贴" 本文将深入探讨MFC(Microsoft Foundation Classes)框架,特别是关于文档模板(CDocTemplate)、文档(CDocument)和视图(CView)的设计及其在MFC应用程序中的核心作用。作者侯捷的《深入浅出MFC》第二版提供了一个名为Scribble的范例,通过这个例子,读者可以更好地理解这些概念。 首先,CDocTemplate是MFC中创建和管理文档与视图的类。它定义了文件类型、文件过滤器、注册表信息等,如`windowTitle`用于设置新文档的标题,`docName`是文档类的名称,`filterExt`和`filterName`用于文件选择对话框的过滤条件,`regFileTypeName`和`regFileTypeId`则是注册表中的文件类型名和ID。在Scribble示例中,这些字符串在【New】对话框中显示,AppWizard自动生成了它们,但用户可以根据需求进行修改。 MFC的Document/View设计模式是面向对象编程在用户界面设计中的应用。`CDocument`类是数据模型的载体,它管理数据并使用CollectionsClasses处理实际的数据操作。另一方面,`CView`类负责数据的可视化,通过`CDC`(设备上下文)和`CGdiObject`进行图形绘制。这种设计允许同一份数据有多重表现形式,如同一文档可以用文本、图表或曲线等多种方式呈现。 图7-3展示了Document/View之间的关系。`CView`作为`CDocument`的可视化接口,用户通过`CView`查看和修改数据。然而,`CView`不能独立存在,它必须嵌入到一个文档框架窗口(DocumentFrame窗口)中。一个Document可以映射到多个Views,不同的Views可以显示同一Document的不同部分。这种关系可以比喻为一个镜头(View)观察一个大画布(Document),通过调整镜头(如添加滚动条、特效等),可以呈现出不同视角的图像。 在MFC程序中,数据管理的关键操作是序列化(Serialization)。通过`Serialize`函数,应用程序可以读写文件,实现数据的持久化。在自定义的`CMyDoc`类中,通常会重写`Serialize`函数以适应特定的数据存储格式。 MFC的Document/View架构提供了一种灵活且强大的方式来构建Windows应用程序,通过分离数据逻辑和显示逻辑,使得开发更易于维护和扩展。通过学习《深入浅出MFC》这样的书籍,开发者能够深入理解这一框架,并利用其功能构建复杂的应用。