首页 理论教育MFC视频教程-运行时类型识别(RTTI)技巧

MFC视频教程-运行时类型识别(RTTI)技巧

【摘要】:凡是包含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所示。

978-7-111-46378-8-Chapter13-72.jpg

图13-25 创建框架视图程序

2)查看主框架类的头文件。

978-7-111-46378-8-Chapter13-73.jpg

3)选中DECLARE_DYNAMIC宏名称,按<F12>键查看宏定义原型。

978-7-111-46378-8-Chapter13-74.jpg

4)在主框架类的头文件中,翻译DECLARE_DYNAMIC宏。

978-7-111-46378-8-Chapter13-75.jpg

5)在主框架的源文件中,选中IMPLEMENT_DYNAMIC,按<F12>键查看宏定义原型。

978-7-111-46378-8-Chapter13-76.jpg

6)在主框架类源文件中,翻译IMPLEMENT_DYNAMIC宏。

//IMPLEMENT_DYNAMIC(CMainFrame,CMDIFrameWnd)

IMPLEMENT_RUNTIMECLASS(CMainFrame,CMDIFrameWnd,0xFFFF,NULL(www.chuimin.cn)

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

978-7-111-46378-8-Chapter13-77.jpg

978-7-111-46378-8-Chapter13-78.jpg

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

978-7-111-46378-8-Chapter13-79.jpg

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

978-7-111-46378-8-Chapter13-80.jpg

978-7-111-46378-8-Chapter13-81.jpg

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

978-7-111-46378-8-Chapter13-82.jpg

图13-26 查看运行结果

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

978-7-111-46378-8-Chapter13-83.jpg

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

978-7-111-46378-8-Chapter13-84.jpg