热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文档、视图和框架

文档和视图的概念是MFC框架的中心。文档是用户在编辑会话中与之交互的数据对象。它是用“文件”菜单上的“新建”或“打开”命令创建的,并且通常保存在文件中。(

文档和视图的概念是 MFC 框架的中心。文档是用户在编辑会话中与之交互的数据对象。它是用“文件”菜单上的“新建”或“打开”命令创建的,并且通常保存在文件中。(从 CDocument 类派生的标准 MFC 文档不同于活动文档和 OLE 复合文档。)视图是窗口对象,用户通过它与文档交互。

正在运行的应用程序中的主要对象有:


  • 文档。

    文档类(从 CDocument 派生)指定应用程序的数据。

    如果应用程序中需要 OLE 功能,则从 COleDocument 或其派生类之一派生文档类,具体取决于所需的功能类型。

  • 视图。

    视图类(从 CView 派生)是用户的“数据窗口”。视图类控制用户如何查看文档数据以及如何与之交互。在某些情况下,可能需要一个文档具有多个数据视图。

    如果需要滚动,则从 CScrollView 派生。如果视图具有在对话框模板资源中布局的用户界面,则从 CFormView 派生。对于简单的文本数据,使用CEditView 或从其派生。对于基于窗体的数据访问应用程序(如数据输入程序),从 CRecordView(对于 ODBC)派生。可用的还有CTreeViewCListView 和 CRichEditView 类。

  • 框架窗口

    视图显示在“文档框架窗口”内。在 SDI 应用程序中,文档框架窗口也是应用程序的“主框架窗口”。在 MDI 应用程序中,文档窗口是显示在主框架窗口中的子窗口。派生的主框架窗口类指定包含视图的框架窗口的样式和其他特性。如果需要自定义框架窗口,则从 CFrameWnd 派生以自定义 SDI 应用程序的文档框架窗口。从 CMDIFrameWnd 派生以自定义 MDI 应用程序的主框架窗口。另外从 CMDIChildWnd 派生一个类,以自定义应用程序支持的每种不同的 MDI 文档框架窗口。

  • 文档模板

    文档模板编排文档、视图和框架窗口的创建。从 CDocTemplate 类派生的特定的文档模板类创建和管理一种类型的所有打开的文档。支持多种文档类型的应用程序具有多个文档模板。对 SDI 应用程序使用 CSingleDocTemplate 类,对 MDI 应用程序使用 CMultiDocTemplate 类。

  • 应用程序对象

    应用程序类(从 CWinApp 派生)控制上面的所有对象,并指定应用程序的行为,如初始化和清理。应用程序仅有的一个应用程序对象创建和管理该应用程序支持的任何文档类型的文档模板。

  • 线程对象

    如果应用程序创建单独的执行线程(例如在后台执行计算的线程),则使用从 CWinThread 派生的类。CWinApp 本身是从 CWinThread 派生的,并且表示应用程序中的主执行线程(或主进程)。也可以在辅助线程中使用 MFC。

在一个正在运行的应用程序中,这些对象通过命令和其他消息绑定在一起,共同响应用户操作。一个应用程序对象管理一个或多个文档模板。每个文档模板创建和管理一个或多个文档(取决于应用程序是 SDI 还是 MDI)。用户通过包含在框架窗口中的视图查看和操作文档。下图显示 SDI 应用程序中这些对象之间的关系。

正在运行的 SDI 应用程序中的对象

本文章族的其余部分阐释框架工具、“MFC 应用程序向导”和资源编辑器如何创建这些对象,如何一起工作以及如何用于编程。窗口对象和文档/视图结构中对文档、视图和框架窗口进行了更详细的探讨。


请参见

使用类编写 Windows 应用程序


转自:http://msdn.microsoft.com/zh-cn/library/cc485520(v=vs.71).aspx


推荐阅读
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 本文介绍了一个简单的方法来防止RecyclerView在用户触摸时停止滚动。通过自定义RecyclerView类,可以实现对触摸事件的精确控制,从而避免不必要的滚动停止。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • 本文介绍了 Android 开发中常用的滚动视图组件 ScrollView 和 HorizontalScrollView 的基本用法和注意事项,帮助开发者更好地处理屏幕内容超出显示范围的情况。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
author-avatar
思念着你2502859117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有