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深入探讨(五)的更多相关文章

  1. 《深入浅出MFC》– Document-View深入探讨

    1.其实Document/View不是什么新东西,Xerox PARC实验室是这种观念的滥觞.它是Smalltalk环境中的关键性部分,在那里它被称为Model-View-Controller(MVC ...

  2. 《深入浅出MFC》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有 ...

  3. 深入浅出MFC——MFC六大关键技术仿真(二)

    1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...

  4. 深入浅出MFC——MFC骨干程序(四)

    1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...

  5. 【笔记】《深入浅出MFC》第5章 总观Application Framework

    凝聚性强.组织化强的类库就是Application Framework.一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务,这就是Application Framework ...

  6. 《MFC游戏开发》笔记五 定时器和简单动画

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...

  7. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  8. 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>

    侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...

  9. 深入浅出MFC学习笔记 消息

    本章将会对MFC的消息映射和 命令传递机制做深入探讨. MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindowProc. 在产生窗口之前,如果我们在创建窗口时指 ...

随机推荐

  1. Ogre GpuProgram分析

    和前面讲解的Compositor一样,GpuProgram也对应一种资源文件,意思我们可以直接写一个文件来完成,不需要了解相关的类. 但是就和winform一样,直接拖控件能完成大部分工作,假如如果需 ...

  2. Linux-HA实战(3)— 基于Pacemaker搭建TFS Nameserver HA

    上篇文章简单介绍了下基于Heartbeat的虚拟IP配置,个人觉得简单易用已经能够应付大部分场景了.但是既然花时间研究HA,如果仅限于一个虚拟IP飘来飘去未免有点糊弄任务了,因此这篇文章打算介绍下基于 ...

  3. 让你的MyEclipse像Visual Studio 2008一样拥有强大功能智能感知功能

    Windows→Preferences→Java→Editor→Content Assist 我们看到其中的AutoActivation Delay默认值为200(单位是毫秒)也就是说在打“.”之后停 ...

  4. html常用对照表

    常用对照表:http://tool.oschina.net/commons

  5. 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令

    w/uptime 查看系统负载 w查看系统负载,uptime跟w一样. [root@centos7 ~]# w 22:34:10 up 6 days, 23:10,  4 users,  load a ...

  6. 非抢占式RCU中关于grace period的处理(限于方法)

    参考自:http://blog.csdn.net/junguo/article/details/8244530             Documentation/RCU/* TREE_RCU将所有的 ...

  7. 如何在Java 环境下使用 HTTP 协议收发 MQ 消息

    1. 准备环境在工程 POM 文件添加 HTTP Java 客户端的依赖. <dependency> <groupId>org.eclipse.jetty</groupI ...

  8. python怎么写可读性好的面向过程的长篇代码?

    最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...

  9. python __all__用法

    主要是用来限定暴露的api a.py文件里面的内容 __all__ = ['major_fun'] def major_fun(): pass def assist_fun(): pass b.py ...

  10. 本地推送UILocalNotification(转)

    1.增加一个本地推送 //设置20秒之后 NSDate *date = [NSDate dateWithTimeIntervalSinceNow:]; //chuagjian一个本地推送 UILoca ...