深入浅出 MFC
——关于六大仿真技术的模拟
关于原书的用consol仿真的MFC程序对于只学习过C++的人而言无疑是巨大的挑战,但我认为着为初学者而言,重要的不是去弄懂如何去写那些仿真的console程序,重要的是对于MFC的流程问题,搞清楚MFC的运作关系是重要的,所以对于其六大仿真技术着一个简单点的描述。
一. MFC程序的初始化过程
对于设计过MFC的程序员而言,在前面设计时的六项选择大概不会忘记,那就是MFC程序初始化方向的选择。MFC的初始化主要是提供函数的接口,提供windows的主窗口,和一些常用的rc。但作为初学者而言,你需要知道的是虚函数的重要性,虚函数在MFC中进行windows窗口的初始化,同时提供接口让你自己去改写窗口。
二. RTTI(执行时期型别判断)
要进行执行时期的型别判断就必须在之前就要着好工作,记录好必要的信息,建立类型的的通讯录,最好是以串行的方式连接起来,方便查找对比。每个类以首尾指针连接起来,这样就形成了一个网络,在网络中逆行而上查找类别,有则是,无则非。
三. Dynamic Creation(动态生成)
动态生成其实就是console中的new,但在MFC中却不是想象的那样简单,在每个类中建立一个构造函数。当要调用时通过上述建立的型录就能找到对应的构造函数了。
四. Persistence(永久生成)机制
顾名思义永久生成就是要产生文档,但说到机制就要想到的是不光是生成,还有读取。在每次记录对象时候,先写入一个代码,表示此对象类别是否在文档中记录过,如果是新类别就要记录其类别名称;但如果是旧类别,则以代码表示。这样的做法不但节省时间,也节省空间。
五. Message Mapping(消息映射)
消息映射就是要将消息和其处理例程连接起来,一般说来是一条鞭连接下去的。如果当消息要横流时,就需要下面的机制了。
六. Command Routing(命令绕行)
这里只提了一下绕行的时机,当是一般的windows消息,一定是由衍生类流向基础类别,没有旁流;如果是命令消息WM_COMMAND,就有可能有奇特的路线了。
本文引用了大量《深入浅出MFC2》上的语句,目的只是能简单的理解问题,仅此而以。若有不同意见,欢迎提出。
记于2009.7.17 黯風夜隱