我看到MFC实现动态创建对像是记录一张类信息表,以下是在MSDN上找到的动态创建的范例:CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
CObject* pObject = pRuntimeClass->CreateObject();
ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
这种创建应该和 CMyClass * pMyObject =new CMyClass();一样的吧 ,只是多了一项类型判断(这是属于动态类型识别吧?),那动态创建体现在什么地方了?
MFC是否支持根据字符串变量动态创建对象??!,具体怎样实现?谢谢!
CObject* pObject = pRuntimeClass->CreateObject();
ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
这种创建应该和 CMyClass * pMyObject =new CMyClass();一样的吧 ,只是多了一项类型判断(这是属于动态类型识别吧?),那动态创建体现在什么地方了?
MFC是否支持根据字符串变量动态创建对象??!,具体怎样实现?谢谢!
解决方案 »
- 如何在listctrl控件中,第1行的第3列加入一个图标
- 如何获得EDIT控件中选中的内容?急
- 弱问:MFC中有Message()这个函数吗?
- 用Spy++可以获取工具栏中某个按钮的ID吗
- Atl做为一个控件插入的word中后,如何捕获word的事件
- 这种功能如何实现?
- 谁有Jpg,bmp,wmf,gif相互转换(能读写)的源码例子,好用的Dll或Lib也行,控件不要,100相送!
- 有没有在ATL Server COM中创建类似MFC的Document-View模型的工程?
- SOS!!!SOS!!!SOS!!!(懂解密码的高手请进)
- 哪位大侠能够讲一下MFC程序的产生、执行、结束全过程(越详细越好)
- 怎样通过SHGetFileInfo取得"桌面"图标?
- 转指定级数灰度图片的问题
使用RUNTIME_CLASS(class_name)宏返回对应类型的CRuntimeClass指针,MFC中定义如下:
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))2。因为CRuntimeClass实际上是一个struct,注意只要是实现了IMPLEMENT_DYNCREATE宏的类,在CRuntimeClass成员中都有对应的CreateObject等函数,而CreateObject实际上是一个对象工厂,它返回一个new出来的对象,这个CObject的派生类对象的具体类型判别是由CRuntimeClass的成员m_lpszClassName决定的,讲到底就是用一个const char[]的字符串来决定所生成的对象是什么类型。