第5节  运行时类型识别(RTTI)

更新于 2026年10月10日 版权声明
第5节 运行时类型识别(RTTI)

凡是包含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(https://www.daowen.com)

7)继续查看IMPLEMENT_RUNTIMECLASS宏定义原型。

图示

图示

8)在主框架类源文件中,继续翻译IMPLEMENT_RUNTIMECLASS宏。

图示

9)修改应用程序类中“新建”菜单项的消息映射函数。

图示

图示

10)编译并运行,测试代码,如图13-26所示。

图示

图13-26 查看运行结果

11)查看IsKindOf函数的源代码。

图示

12)查看IsDerivedFrom函数的源代码。

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)