1. RTTI
运行时类型识别:在程序执行过程中能够判断a对象是否是A类,返回true或者false;
类别型录网:用来记录类之间的关系,以链表的形式记录必要的信息,供查询;
CRnutimeClass:用来刻画类别型录中用来记录类信息的链表,包含类名,next指针、static first指针;
宏定义DECLARE_DYNAMIC、IMPLEMENT_DYNAMIC 将CRuntimeClass添加到类中
2.动态创建
将对象的大小与创建函数都放到类别型录中,根据他们就可以在运行时创建对象。
相关的宏:DECLARE_DYNCREATE、IMPLEMENT_DYNCREATE,在DECLARE_DYNAMIC基础之上增加了对象大小和创建函数
顺着指向基类的指针寻找
3.Persistence机制
涉及到Document/View结构对文件的读写:Serialize
每一个可读可写文件的类都要重写自己的Serailize类,负责自己数据的读写任务,还应该重载<<和>>,将数据倒到archive中(它是与文件缓冲区习习相关的缓冲区)
相关的宏:DECLARE_SERIAL、IMPLEMENT_SERIAL 将serialize放到类中
4.
4.1 Message Mapping
将消息与对应的处理函数对应起来
相关宏:DECLARE_MESSAGE_MAP(.h); (.cpp) BEGIN_MESSAGE_MAP ON_COMMAND() END_MESSAGE_MAP()
构建了一个消息传递网(如何构建的??)
4.2 Command routing(消息路由)
-Windows消息(WM_)往基类走
-命令WM_COMMAND就不一定
Run()中的AfxWndProc()是消息泵,最终调用pWnd->WindowProc(),依靠虚函数来实现消息路由