MFC运行时动态类实现
- MD DocUmEnT: 4/2/2016 12:28:57 AM by Jimbowhy
技术背景
MFC是微软为数不多,公开源代码发布的一个软件框架,深入的技术分析可以参考侯俊杰先生的《深入浅出MFC》,资料确实非常赞,作者真可谓知无言,言无不尽。虽然现在有许多关于MFC过时与否的讨论,个人觉得没有必要参与其中,所有事物其实都会有过时的那天,人也是如此。对于没有掌握的一种技术,那就是新的,并非过时,过时只是对于前面那批会MFC却又不用MFC做事的人来说的。我并没有完全掌握MFC,但我也没有必要完全去掌握MFC,只是喜欢MFC,喜欢学习其中的实现技术。MFC并不一定能减轻程序开发的负担,相反它可能会很大程序上增加程序人员的工作量,如果不适当地应用这种技术。
运行时类型信息 RTTI,Run-Time Type Information 和动态类型 Dynmic Class 作为MFC六大核心机制其中之二,联系非常紧密,就像消息映射 Message Mapping 和命令传递 Command Routing一样结合紧密。其余两项核心技术,MFC初始化与持久化 Persistence 则相对独立。而消息映射机制和动态类型则是我认为最有趣的两大技术,C++标准也有RTTI的实现,但MFC比它更早。
实现代码
要掌握动态类型光靠文字描述效果不怎样,其实写下代码最有说服力,从代码的角度理解动态类型的工作原理是十分贴切的。实现完整的动态类型可以粗分为四个步骤,首先是创建动态类型基础,它可以记录系统所有动态类型信息,其作用相当于数据库,代码实现上它就