---------------大家帮帮忙啊-----------mfc动态创建类的问题。。。。。。。 在mfc里面 要实现动态创建类 ,new一个类 为什么要加入相关宏啊?DECLARE_DYNCREATE(CMsg);IMPLEMENT_DYNAMIC(CMsg,CObject)我们普通的类 为什么 可以 想new就new啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个作用是“运行时类型识别”,对应的类可以用RUNTIME_CLASS宏得到一个CRuntimeClass结构,可以用IsKindof判断其类型,类似于typeofhttp://blog.csdn.net/52yyp/archive/2009/04/02/4042942.aspx DECLARE_DYNCREATE:表示这个类可以用上面那个CRuntimeClass创建自身,CRuntimeClass * pClass = RUNTIME_CLASS(CMyClass);CMyClass * pObj = (CMyClass*)(pClass->CreateObject()); 还是不明白...这是mfc的机制吗? DECLARE_DYNCREATE(CMsg);和IMPLEMENT_DYNCREATE(...);DECLARE_DYNAMIC(..);和IMPLEMENT_DYNAMIC(CMsg,CObject)对应 为什么mfc中要这些啊..我们平时的c++类 可以随便new啊.. 这点很不理解 啊 貌似为了动态生成而做的。如果只知道一个类名为字符串"CString",这怎么new? 个人理解:这样做主要是为了让MFC知道类的基类是属于 doc/view/frame/dialog.....也就是使IsKindOf()函数能都识别主要是为了再消息分派时,区别对待 好像侯捷的《深入浅出MFC》里面有一章专门讲CRuntimeClass的,你可以去看看 你自己没用到是因为你写的类都比较简单,没有太多的继承关系;假设你写了一个基类是人,由人又派生出来很多子类:黄种人、白种人、黑人……;派生关系很复杂之后;如果你知道了一个类变量赋值给它的基类,你在其他地方又需要调用这个基类,你还想通过这个基类(人)知道它到底是那个派生类(黄种人?白种人?),你就需要用到这个RUNTIME_CLASS;你在类继承的时候就需要用到那几条宏啦 怎么给单文档的VC切分窗口也就是运行后的主界面添加背景啊 存储Bitmap图片 如何动态获得ole对象的函数? 怎样将CDC对象中的绘图内容保存下载? 如何让工具栏中按钮的文字显示在图标的右边 如何通过程序名知道程序是否在运行并获得其句柄。 一个小问题 Access2000的“设置数据库密码”安全性如何?我的数据库需要加密 菜鸟问题。如何加上滚动条? 如何用vtk打开一个off格式的文件啊 一个关于线程基础知识的问题 CImageList中add的使用
CMyClass * pObj = (CMyClass*)(pClass->CreateObject());
IMPLEMENT_DYNCREATE(...);DECLARE_DYNAMIC(..);
和
IMPLEMENT_DYNAMIC(CMsg,CObject)对应
你自己没用到是因为你写的类都比较简单,没有太多的继承关系;
假设你写了一个基类是人,由人又派生出来很多子类:黄种人、白种人、黑人……;派生关系很复杂之后;如果你知道了一个类变量赋值给它的基类,你在其他地方又需要调用这个基类,你还想通过这个基类(人)知道它到底是那个派生类(黄种人?白种人?),你就需要用到这个RUNTIME_CLASS;你在类继承的时候就需要用到那几条宏啦