mfc rtti技术(12)

模态对话框,非模态对话框(domodal, new、create、destroywindow)

CRuntimeClass DECLEAR_DYNAMIC/IMPLEMENT_DYNAMIC
由于所有的类继承CObject类都包含此结构,用于保存基类对象类等信息。定义宏则是为其添加此类必要成员函数和成员变量。
(也就是说每新建一个类我们都可以加入MFC的继承表中,就是每个类声明中加入一个CRuntimeClass但是这个数据结构中有很多成员变量和函数。而且在实现文件中也要加入一些成员变量和函数的初始化或者成员函数的定义工作,每个类都要这么做会花很多行代码。还好微软给我们定义了几个宏让我们可以很方便的把我们定义的类加入到MFC继承的大绳中去。)

(其实说白了就是一个链表,每个类里加DECLARE_DYNAMIC后就生成一个CRuntimeClass的静态变量,保存了自己的类名和基类的静态CRuntimeClass指针。其它那些函数都是用这两个遍历查找。对应基类的名字,或对应名字的基类指针,在程序全局中也有一个CRuntimeClass链表,里面有所有加了运行类支持的类信息。)

mfc的RTTI技术(运行时类型识别):
IsKindOf(RUNTIME_CLASS(CtestDlg));

// //