【摘要】:凡是包含DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC两个宏的MFC类或派生类,都是支持运行时类型识别的类。DECLARE_DYNCREATE宏定义中包含DECLARE_DYNAMIC宏,因此,凡是支持动态创建的MFC派生类必然支持运行时类型识别。创建一个工程名为“rt”不使用文档视图架构的MDI程序,用于学习RTTI的原理。4)在主框架类的头文件中,翻译DECLARE_DYNAMIC宏。5)在主框架的源文件中,选中IMPLEMENT_DYNAMIC,按<F12>键查看宏定义原型。//IMPLEMENT_DYNAMICIMPLEMENT_RUNTIMECLASS继续查看IMPLEMENT_RUNTIMECLASS宏定义原型。8)在主框架类源文件中,继续翻译IMPLEMENT_RUNTIMECLASS宏。
凡是包含DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC两个宏的MFC类或派生类,都是支持运行时类型识别的类。DECLARE_DYNCREATE宏定义中包含DECLARE_DYNAMIC宏,因此,凡是支持动态创建的MFC派生类必然支持运行时类型识别。
创建一个工程名为“rt”不使用文档视图架构的MDI程序,用于学习RTTI的原理。
1)在向导第1步,选择多文档和非文档视图框架,如图13-25所示。
图13-25 创建框架视图程序
2)查看主框架类的头文件。
3)选中DECLARE_DYNAMIC宏名称,按<F12>键查看宏定义原型。
4)在主框架类的头文件中,翻译DECLARE_DYNAMIC宏。
5)在主框架的源文件中,选中IMPLEMENT_DYNAMIC,按<F12>键查看宏定义原型。
6)在主框架类源文件中,翻译IMPLEMENT_DYNAMIC宏。
//IMPLEMENT_DYNAMIC(CMainFrame,CMDIFrameWnd)
IMPLEMENT_RUNTIMECLASS(CMainFrame,CMDIFrameWnd,0xFFFF,NULL(www.chuimin.cn)
7)继续查看IMPLEMENT_RUNTIMECLASS宏定义原型。
8)在主框架类源文件中,继续翻译IMPLEMENT_RUNTIMECLASS宏。
9)修改应用程序类中“新建”菜单项的消息映射函数。
10)编译并运行,测试代码,如图13-26所示。
图13-26 查看运行结果
11)查看IsKindOf函数的源代码。
12)查看IsDerivedFrom函数的源代码。
相关推荐