MFC特性

11 篇文章 0 订阅
2 篇文章 0 订阅

一、 RTTI

1、duilib 实现方式:CUIControl 声明 虚函数GetClassName(),衍生重写该函数

2、Mfc实现方式:在类声明(Cxxx.h)的里面(一般在类声明的第一行代码)中插入DECLARE_DYNAMIC(Cxxx) ,在类的定义里面(Cxxx.cpp)里面(一般在头文件下面 类的构造函数上面)插入MPLEMENT_DYNAMIC(Cxxx, Cxxxbase)

这两个宏声明了它的类别名称(静态)classCXXX以及获取类别函数,以及初始化类别名称和获取类别函数的实现

其中

1、获取类型方法 返回& CXXX::classCXXX

2、IsKindOf ,循环往下查找基类是否和传入值一致,如果一致,返回true


二、Dynamic Creation (动态生成)

依赖于RTTI 和两个宏 DECLARE_DYNCREATE,IMPLEMENT_DYNCREATE。

1、用户输入类型名称,然后利用RTTI,从CRuntimeClass 的 pFirstClass开始,不断查找与类型名称一致的内存中的某个类的CRuntimeClass 对象(注意:每个类不管对象数量,只保存一个CRuntimeClass 对象)

2、调用CRuntimeClass 的静态函数指针m_pfnCreateObject,这个指针指向目标类型的静态成员函数CreateObject

3、静态成员函数CreateObjectMPLEMENT_DYNCREATE宏定义为classClassName:CreateObject () { return new class_name; }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值