在使用 Microsoft 基础类 (MFC) 库框架时很大程度上基于几个主要的类和 Visual C++ 工具。
一些类封装了 Win32 应用程序编程接口 (API) 的一大部分。

他类封装了应用程序概念,如文档、视图和应用程序本身。
还有其他类封装了 OLE 功能以及 ODBC 和 DAO 数据访问功能。

例如,Win32 的窗口概念由 MFC 类 CWnd 封装。 也就是说,名为 CWnd 的 C++ 类封装或“包装”了表示 Windows 窗口的 HWND 句柄。 同样,CDialog 类封装了 Win32 对话框。

以 C++ 类 CWnd 为例,封装意味着它包含了 HWND 类型的成员变量,并且它的成员函数封装了对采用 HWND 作为参数的 Win32 函数的调用。 类成员函数通常具有与其所封装的 Win32 函数相同的名称。

借助 MFC,可以轻松地使用单文档界面 (SDI) 和多文档界面 (MDI) 应用程序。

SDI 应用程序一次只允许打开一个文档框架窗口。
MDI 应用程序允许在应用程序的同一实例中打开多个文档框架窗口。 MDI 应用程序有一个窗口,在该窗口中可以打开多个 MDI 子窗口(其本身就是框架窗口),每个子窗口都包含一个单独的文档。
在某些应用程序中,子窗口的类型可以不同,例如图表窗口和电子表格窗口。 在这种情况下,菜单栏可随着不同类型的 MDI 子窗口激活而改变。

MFC 框架的核心是文档和视图的概念。
文档是用户在编辑会话中与之进行交互的数据对象。
视图是用户与文档进行交互所用的窗口对象。

正在运行的应用程序中的关键对象有:

线程对象

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

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

一个或多个文档模板

文档模板可协调文档、视图和框架窗口的创建。
派生自 CDocTemplate 类的特定文档模板类创建并管理一个类型的所有打开的文档。
支持多种文档类型的应用程序具有多个文档模板。
将 CSingleDocTemplate 类用于 SDI 应用程序,或将 CMultiDocTemplate 类用于 MDI 应用程序。

框架窗口

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

如果你在应用程序中需要 OLE 功能,请从 COleDocument 或其派生类之一派生文档类,这取决于你需要的功能类型。
一个视图或多个视图。
视图类(派生自 CView)是用户的“数据窗口”。视图类控制用户如何查看文档数据并与之交互。 在某些情况下,您可能希望一个文档拥有多个数据视图。

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

在一个正在运行的应用程序中,这些对象以协作方式响应用户操作(由命令和其他消息绑定在一起)。
一个应用程序对象管理一个或多个文档模板。 每个文档模板创建并管理一个或多个文档(具体取决于应用程序是 SDI 还是 MDI)。
用户通过包含在框架窗口中的视图查看和操作文档。


资料来自https://learn.microsoft.com/zh-cn/cpp/mfc/documents-views-and-the-framework?view=msvc-170

vc++拾遗(7)-框架、视图、文档相关推荐

  1. 框架、文档、视图类之间的调用关系

    在多文档MFC应用程序执行过程中,创建了多于一个的文档类.视图类.子框架类对象和一个主框架类.应用类对象.这些对象之间是通过一定的方式联系在一起的,在应用程序设计中,时常需要通过这些对象之间的关系来实 ...

  2. 面向开放域密集检索多视图文档表示学习,微软提出​MVR,性能SOTA!(ACL 2022)...

    关注公众号,发现CV技术之美 本文分享 ACL 2022 论文『Multi-View Document Representation Learning for Open-Domain Dense Re ...

  3. OVAL验证框架帮助文档

    OVAL验证框架帮助文档 java开源验证框架oval,功能非常强大,使用简单:现在整理帮助文档供大家参考,希望能得到更多的反馈和使用经验. 1.  注解说明 1.1.  @Assert Check ...

  4. DL动态加载框架技术文档

    DL动态加载框架技术文档 DL技术交流群:29969245 1. Android apk动态加载机制的研究 2. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理 ...

  5. 鸡啄米vc++2010系列40(文档、视图和框架:分割窗口)

    分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图. MFC分割窗口的方式有两种,动态分割和静态分割. 动态分割窗口通 ...

  6. Robolectric测试框架使用文档

    Robolectric使用文档 --keeng2008@qq.com 2016-01-07 1.测试驱动你的Android应用代码 在Android模拟器或者手机上运行单元测试是很漫长的.每次编译.部 ...

  7. django框架学习文档_Python四大主流网络编程框架,你知道么?

    高并发处理框架-- Tornado Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器.它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大 ...

  8. SSM框架学习文档以及SSM整合(附Github地址=含SSM学习时的实例代码)

    SSM框架学习 软件架构: 基于流行SSM框架:Spring+SpringMVC+Mybatis 项目配置: 使用Maven进行项目jar导入 ​ 使用Git进行版本控制,并将每次编写的代码上传到Gi ...

  9. layuiAdmin 框架iframe文档

    layuiAdmin.std(iframe 版) 是完全基于 layui 架构而成的通用型后台管理模板系统,采用传统的 iframe 多页面开发模式,可更快速直接地开发网页后台应用程序,无需过多地学习 ...

  10. 一份MyBaits框架PDF文档,阿里架构师直言,Java程序员快收藏吧

    mybatis技术相信各位都不陌生, 在我们目前最常见的三大框架中,其中就有mybatis, 也可以说,几乎所有的Java程序员, 都必须掌握mybatis框架,这一份文档,讲从0开始讲解,带着你由浅 ...

最新文章

  1. Python 中文注释报错解决方法
  2. Kerberos协议
  3. linux 基础知识及命令总结
  4. window下的Django环境搭建
  5. VS Code 终端窗口无法输入命令的解决方案
  6. node mysql gbk_nodejs gb2312、GBK中文乱码解决方法
  7. Java实现文件搜索
  8. “关灯”看这出戏,依旧是百年至美
  9. 量子计算数学基础,pauli 矩阵
  10. 第五篇:mig读写时序下板实现
  11. 多线程处理Excel导入数据入库
  12. 又一个项目要结项了,项目报告PPT内容节选点纪念一下
  13. JAVA程序设计:买卖股票的最佳时机含手续费(LeetCode:714)
  14. 【距离产生美xp主题】_8.30
  15. MOGRT 金色粒子爆炸特效logo展示pr片头模板mogrt
  16. 程序员要如何走上创业逆袭路,获得百万、千万?
  17. Tryhackme-Network Security
  18. 关于计算机知识的手抄报图片大全,关于科技节手抄报的图片大全
  19. qpython3l如何使用_如何用 python 抓取银行各年利率(动态的)?
  20. 《趣题学算法》—第1章1.5节置换与轮换

热门文章

  1. 小米造车,雷军赌上个人声誉的一战
  2. 《团队协作的五大障碍》读后感
  3. DSP28系列—编写micros()微秒计数和millis()毫秒计数函数
  4. 用友nc登陆提示java_用友NC软件无法进入登陆界面,提示“网页上有错误”等现象   问题现象...
  5. 达摩达兰论估价pdf_《故事与估值:商业故事的价值》pdf文字版下载
  6. Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx错误
  7. 【游戏通关】解题报告
  8. 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
  9. c语言释放链表所用内存,C语言利用链表实现有效内存管理
  10. cvc-complex-type.2.4.d: 发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。