【笔记】《深入浅出MFC》第5章 总观Application Framework
凝聚性强、组织化强的类库就是Application Framework。一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务,这就是Application Framework。
Application Framework是一组超级的类库,能够被称为Framework者必须是其中的类性质紧密咬合,互相呼应。
绝大部分类库,往往以一个或两个类,作为其它绝大部分类的基础,MFC也一样。CObject是万类之首,凡派生自CObject者,得以继承数个面向对象重要性质,包括RTTI(运行时类型识别)、Persistence(对象保存)、Dynamic Creation(动态创建)、Diagnostic(错误诊断)。
MFC支持的数据处理类(collection classes)有:

异常处理有关的MFC类有以下11种:

凡派生自CWnd的类才能收到WM_窗口消息(WM_COMMAND除外)。
所谓窗口handle和C++对象结盟,实际上是CWnd对象有一个成员变量m_hWnd,就放着对应窗口handle。所以,只要有CWnd对象或CWnd对象指针,就可以获得其窗口handle。
HWND hWnd = pWnd->m_hWnd;
CCmdTarget是CWnd的父类。派生自它,类才能够处理命令消息WM_COMMAND。这个类是消息映射以及命令消息传递的大部分关键。
Document/View的观念是希望把数据的本体和数据的显示分开处理。由于文件产生之际,必须动态创建Document/View/Frame三种对象,所以又必须由所谓的Document Template管理之。Document Template扮演黏胶的角色,把Document 和View 和其Frame(外框窗口)胶黏在一块儿。
CDocument:当你为自己程序由CDocument派生出一个子类后,应该在其中加上成员变量,以容纳文件数据;并加上成员函数,负责修改文件内容以及读写文件。读写文件由虚函数Serialize负责。
下面是几个常见的Afx全局函数:

CObject和CRuntimeClass中封装了数个所谓的object services,包括“取得运行时的类信息(RTTI)”、Serialization(文件读写)、动态产生对象等等。所有派生自CObject的类,都继承这些机能。
MFC针对这些机能定义了一些宏:

MFC的消息映射与命令传递由以下宏完成:

MFC的大部分数据类型和一般的Win32程序所用的相同,下面是共用的数据类型:

下面是MFC独特的数据类型:

【笔记】《深入浅出MFC》第5章 总观Application Framework的更多相关文章
- 《深入浅出MFC》下载
		
百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有 ...
 - 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
		
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...
 - 深入浅出MFC——MFC六大关键技术仿真(二)
		
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...
 - 深入浅出MFC——Document-View深入探讨(五)
		
1. MFC之所以为Application Framework,最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来,这种能力由MFC的Document/View提供.Doc ...
 - DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)
		
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
 - 《python基础教程(第二版)》学习笔记 函数(第6章)
		
<python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params): block return values 记录函数:def f ...
 - 《python基础教程(第二版)》学习笔记 字典(第4章)
		
<python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),(' ...
 - 《python基础教程(第二版)》学习笔记 字符串(第3章)
		
<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...
 - Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)
		
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...
 
随机推荐
- excel依赖的dll
			
依赖的先后顺序 stdole.dll office.dll Microsoft.Vbe.Interop.dll Microsoft.Office.Interop.Excel.dll Interop是i ...
 - ajax post 参数说明
 - 网络压缩论文整理(network compression)
			
1. Parameter pruning and sharing 1.1 Quantization and Binarization Compressing deep convolutional ne ...
 - MVC ---- EF批处理
			
#region 批处理 ///<summary> ///两增一删一改 ///</summary> public void Save(){ //新增参一 Parameter pa ...
 - Linux——bash应用技巧简单学习笔记
			
本人是看的lamp兄弟连的视频,学习的知识做一下简单,如有错误尽情拍砖. 命令补齐 命令补齐允许用户输入文件名起始的若干个字 母后,按<Tab>键补齐文件名. 命令历史 命令历史允许用户浏 ...
 - ros 启动launch文件,附带参数
			
roslaunch cartographer_ros cartographer_ref.launch resolution:=0.07 #下面是cartographer_ref.launch的内容 & ...
 - JS 字符串 作为变量名
			
function initCKEditor(querySelector,content_val,myEditor) { ClassicEditor.create(document.querySelec ...
 - Oracle学习笔记(二)——临时表
			
在针对大数据量的多表级联查询或复杂事务处理的时候,引入Oracle临时表是一种不错的策略.因此,在解决实际需求时经常会遇到需要使用存储过程和临时表相互配合的情况.下面就Oracle如何创建临时表以及注 ...
 - Codeforces D - High Load
			
D - High Load 因为要出口节点距离最小,所以除了根节点(根节点连接k个儿子)其他节点的儿子只能有一个,其他情况下的距离都比这个长,因为如果不是这样,那么根节点连接的子树数量就小与k,那么每 ...
 - Java 常用对象-Math类
			
2017-11-02 21:26:18 Math类:Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. *属性摘要 *常用方法 random() : 返回[0.0,1.0 ...