在学校看了一点MFC一直没用,最近帮别人写点相关的东西看了一下,在这里记录下学到的一些东西,MFC 最重要的主要就是RTTI、消息映射和传递、动态创建和序列化的一些东西了。
RTTI只要通过DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC即可实现添加一个类进入运行时类信息网中,实际上就是一个以静态变量pFirstClass 为头指针的链表。
动态创建一样通过宏DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE实现,该宏要比RTTI宏强大,其包含了RTTI的宏所声明和实现的东西,同时还增加了CreateObject函数的实现 以实现创建功能。
序列化是通过DECLARE_SERIAL和IMPLEMENT_SERIAL实现,该宏又要比动态创建的宏强,其包含了动态创建的所有声明和实现的东西,同时还包含了流操作符的重载声明和实现,要实现序列化还得看该对象是否可序列化和对该对象重写serialize函数。
消息映射也是通过DECLARE_MASSAGE_MAP和BEGIN_MESSAGE_MAP以及END_MESSAGE_MAP宏实现,在DECLARE_MASSAGE_MAP声明了所需要的变量和函数,在BEGIN_MESSAGE_MAP及END_MESSAGE_MAP直接添加消息映射的关联。
消息传递如果是标准WM_开头的消息则首先从当前类查找对应函数然后到父类查找,如果是命令消息则会相对复杂,如果是命令消息同时你没有重写OnCommand函数则会很多。就是虚函数的用法。熟练掌握MFC需要熟练掌握所用到的主要的类及类的继承关系和重要的虚函数和功能及其调用关系。。