1、MFC中,所有的类都派生于CObject类,那么也就是说CObject*可以指向MFC中任何类。
2、所以有时候自己都弄不清楚自己的类名。
3、
#define DECLARE_DYNAMIC()\ private:\ static char *ClassName;\ public:\ char * GetClassName();
4、
#define IMPLEMENT_DYNAMIC(classname)\ char * classname::ClassName = #classname;\ char * classname::GetClassName()\ {\ return ClassName;\ }
5、动态创建
CObject* CreateObject(char *classname)//这里进来的是一个字符串,所以实现的时候需要进行字符串比较。 { if(!strcmp(classname, "CObject")) return new CObject; if(!strcmp(classname, "SonClass")) return new SonClass;
return NULL; }
这个函数要求我们事先必须知道,程序员可能使用那些类名。
6、
#define Create(ClassName) new ClassName
这个宏比函数好使的多了,宏只是做替换。