[MFC]动态对象创建、文档模板加载.rc资源

本文详细介绍了MFC中动态对象创建的实现步骤,包括从CObject派生,使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏,并解析了DECLARE_DYNCREATE的原理。同时,阐述了文档模板加载.rc资源的过程,通过CSingleDocTemplate构造函数的资源ID加载应用程序图标、菜单等资源,并解析了LoadFrame函数在其中的作用。
摘要由CSDN通过智能技术生成

1. MFC动态创建对象的实现:

    1) 可以看到文档/视图结构中的三个类(App、View、Doc)都使用了动态创建类型的技术;

    2) MFC实现动态对象创建只需要三步即可:

         i. 从CObject派生类型;

         ii. 在类声明部分使用DECLARE_DYNCREATE(类名)宏声明该类是一个可以动态创建的类型;

         iii. 在类实现部分使用IMPLEMENT_DYNCREATE(类名, 基类名)来实现动态创建对象的具体功能;

!!可以看到在Wizzard生成的代码中,在构造函数声明之后使用DECLARE_DYNCREATE宏,在.cpp中的消息映射之前使用了IMPLEMENT_DYNCREATE宏;

    3) DECLARE_DYNCREATE的原理:

         i. 可以实现C++语法不允许的运行时创建类,例如:

CString strMyClass = _T("MyClass");
CMyClass *ptr = new strMyClass;
         ii. 其底层展开实际上是声明了一个CRuntimeClass对象以及两个函数(GetRuntimeClass和CreateObject);

         iii. CRuntimeClass对象用来保存宏参数中输入的自定义的类名;

         iv. GetRuntimeClass以CRuntimeClass对象作为输入并动态创建和注册CRuntimeClass中保存的自定义类名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值