在VC2005中,只要知道类的名字,就可以动态创建类的实例

VC2005中扩展了动态创建CObject派生类的功能,这非常有用,在应用程序中实现二次开发,可以动态创建控件类,可以动态创建模块类,可以动态创建用户自定义类,只要知道类的名字即可:
 
Call this function to retrieve the CRuntimeClass structure associated with the familiar name.
 
static CRuntimeClass* PASCAL FromName(
   LPCSTR lpszClassName
);
static CRuntimeClass* PASCAL FromName(
   LPCWSTR lpszClassName
);
Parameters
lpszClassName
The familiar name of a class derived from CObject.
Return Value
A pointer to a CRuntimeClass object, corresponding to the name as passed in lpszClassName. The function returns NULL if no matching class name was found.
Example
 
Copy Code
// This example creates an object if CMyClass is defined.
 
CRuntimeClass* pMyRTClass= pMyObject->GetRuntimeClass();
 
CRuntimeClass* pClass = pMyRTClass->FromName("CMyClass");
if (pClass == NULL)
{
   // not found, display a warning for diagnostic purposes
   AfxMessageBox("Warning: CMyClass not defined");
   return NULL;
}
 
// attempt to create the object with the found CRuntimeClass
CObject* pObject = pClass->CreateObject();
Remarks
This method is not supported on Smart Devices because, in order for this method to return a class object, the returned class must use the DECLARE_SERIAL , IMPLEMENT_SERIAL macros, which are not supported for devices.
See Also
Reference
 
 
 
CMyClass * pMyObject=new CMyClass;
     CRuntimeClass* pMyRTClass= pMyObject->GetRuntimeClass();
 
     CRuntimeClass* pClass = pMyRTClass->FromName("CMyClass");
 
     CRuntimeClass* pClass0 = CRuntimeClass::FromName("CMyClass");
     // TODO: 在此添加命令处理程序代码
     //CRuntimeClass* pRuntimeClass = CRuntimeClass::FromName("CRunTimeDoc");// RUNTIME_CLASS( CRunTimeDoc );
     CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
     //CObject* pObject = pRuntimeClass->CreateObject("CMyClass");
     CObject* pObject = CRuntimeClass::CreateObject("CMyClass");
     //CObject* pObject = pRuntimeClass->CreateObject();
     ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
 
注意,CMyClass必须从CObject派生必须实现了DECLARE_SERIAL, IMPLEMENT_SERIAL两个宏。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值