热门标签 | 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


推荐阅读
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法
    本文介绍了修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法。首先解释了UEFI的概念和作用,然后提供了两种解决方法。第一种方法是在bios界面中将Boot Mode设置为Legacy Support,Boot Priority设置为Legacy First,并关闭UEFI。第二种方法是使用U盘启动盘进入PE系统,运行磁盘分区工具DiskGenius,将硬盘的分区表设置为gpt格式,并留出288MB的内存。最后,通过运行界面输入命令cmd来完成设置。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
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社区 版权所有