深入浅出MFC——Document-View深入探讨(五)
1. MFC之所以为Application Framework,最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来,这种能力由MFC的Document/View提供。Document/View是MFC的基石,了解它,对于有效运用MFC有极关键的影响。甚至OLE复合文件(compound document)都是建筑在Document/View的基础之上。
2. Document:

3. View:

注:在MFC里头,一旦WM_PAINT发生,Framework会自动调用OnDraw函数。View事实上是个没有边框的窗口。真正出现时,其外围还有一个有边框的窗口,我们称之为Frame窗口(也即 Document Frame(View Frame))。
4. Document Template: MFC把Document/View/Frame视为三位一体。
5. CDocTemplate管理CDocument/CView/CFrameWnd,图示如下:

7. MFC程序代码:
(1):

(2):

(3):Document Frame窗口产生之际,由于WM_CREATE引发CRrameWnd::OnCreate被唤起:

8. CDocTemplate、CDocument、CView、CFrameWnd之间的关系:

9. Document数据结构设计——MFC Collection Classes的选用:
(1):

(2):


10. Template-Based Classes:
(1):

(2):


(3):

11. 了解了Collection Classes中各类的特性以及所谓template/non-template版本之后,本例的数据结构可设计为图示如下:

12. View——数据重绘与编辑:View有两个最重要的任务,一是负责数据的显示,另一是负责数据的编辑。
13. Serialize:对象的文件读写。
(1)台面上的Serialize操作:以《深入浅出MFC》图8-3为例,图示如下:

(2)台面下的Serialize写文件奥秘:




(3)台面下的Serialize读文件奥秘:





14. DYNAMIC/DYNCREATE/SERIAL三宏。
(1):

(2):

(3):

(4):

15. Serializable的必要条件:

16. CArchive类:谈到Serialize就不能不谈CArchive,因为Serialize的对象(无论读或写)是一个CArchive对象。CArchive针对许多C++数据类型、Windows数据类型以及CObject派生类,定义operator<< 和 operator>>重载运算符:
(1):


(2):


17. Document与View交流:

深入浅出MFC——Document-View深入探讨(五)的更多相关文章
- 《深入浅出MFC》– Document-View深入探讨
1.其实Document/View不是什么新东西,Xerox PARC实验室是这种观念的滥觞.它是Smalltalk环境中的关键性部分,在那里它被称为Model-View-Controller(MVC ...
- 《深入浅出MFC》下载
百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有 ...
- 深入浅出MFC——MFC六大关键技术仿真(二)
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...
- 深入浅出MFC——MFC骨干程序(四)
1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...
- 【笔记】《深入浅出MFC》第5章 总观Application Framework
凝聚性强.组织化强的类库就是Application Framework.一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务,这就是Application Framework ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...
- 深入浅出MFC学习笔记 消息
本章将会对MFC的消息映射和 命令传递机制做深入探讨. MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindowProc. 在产生窗口之前,如果我们在创建窗口时指 ...
随机推荐
- Chrome驱动安装问题
1.org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value' 原因:浏览器 ...
- Git安装遇到的问题fatal: Could not read from remote repository.的解决办法
转自:https://blog.csdn.net/huahua78/article/details/52330792 查看远端地址 git remote –v 查看配置 git config --li ...
- Spring加载静态资源的方式
解决方法1:在web.xml里添加如下的配置 <servlet-mapping> <servlet-name>default</servlet-name> < ...
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
方法一:(java习惯,在android不推荐使用) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { ...
- Union和Union All的区别[转]
来源:http://blog.csdn.net/wanghai__/article/details/4712555/ 假设我们有一个表Student,包括以下字段与数据: drop table stu ...
- SAP+ 差旅报销集成方案的实现
跨国集团通常都会有一个财务共享中心SSC的集中处理业务部门,用于统计来自各个公司的差旅报销,而1).传统的OA审批 虽然审批流是优势存在着需要SAP数据二次录入,数据不同步等困难,2).如果终端用户都 ...
- Java如何从数组中查找公共的元素?
在Java中,如何从数组中查找公共的元素? 示例 以下示例显示了如何从两个数组中查找公共元素并将其存储在数组中. package com.yiibai; import java.util.*; pub ...
- Python——with语句、context manager类型和contextlib库
目录 一.with语句 二.上下文管理器 三.contextlib模块 基本概念 上下文管理协议(Context Management Protocol) 包含方法 __enter__() 和 __e ...
- Maven的pom.xml文件结构之基本配置parent和继承结构[转]
1.Maven项目的继承 Maven项目之间不仅存在多模块的聚合关系,而且Maven项目之间还可以存在相互继承的关系. Maven项目之间的继承关系通过<parent>表示,在子Maven ...
- utf8 ucs4
这个问题不好回答,首先UTF-8编码只不过是一种Unicode的转换,兼容ASCII.所以,UTF-8编码支持的最大字符编码应该是Unicode支持的最大字符编码. 理论上,UTF-8编码可以支持最大 ...