#define RUNTIME_CLASS (class_name)(&class_name::class##class_name)
#define DECLARE_DYNAMIC (class_name) \
public:\
static CRuntimeClass class##class_name; \
virtual CRuntimeClass * GetRuntimeClass() const;
#define _IMPLEMENT_RUNTIMECLASS (class_name,base_class_name,wSheme,pfnNew,)\
static char _lpsz##class_name[] =# class_name;\
CRuntimeClass class_name::class##class_name = { \
lpsz##class_name,sizeof(class_name),wShema,pfnNew,\
RUNTIME_CLASS(base_class_name),NULL };\
static AFX_CLASSINIT _init_##class_name(&class_name::class##class_name);\
CRuntimeClass *class_name::GetRuntimeClass() const \
{ return &class_name::class##class_name;}\#define IMPLEMENT_DYNAMIC (class_name,base_class_name)\
_IMPLEMENT_RUNTIMECLASS (class_name,base_class_name,0xffff,NULL)有人能给我解释这段宏吗 ?
尤其是static char _lpsz##class_name[] =# class_name;\ 这个=#是什么用法
#define DECLARE_DYNAMIC (class_name) \
public:\
static CRuntimeClass class##class_name; \
virtual CRuntimeClass * GetRuntimeClass() const;
#define _IMPLEMENT_RUNTIMECLASS (class_name,base_class_name,wSheme,pfnNew,)\
static char _lpsz##class_name[] =# class_name;\
CRuntimeClass class_name::class##class_name = { \
lpsz##class_name,sizeof(class_name),wShema,pfnNew,\
RUNTIME_CLASS(base_class_name),NULL };\
static AFX_CLASSINIT _init_##class_name(&class_name::class##class_name);\
CRuntimeClass *class_name::GetRuntimeClass() const \
{ return &class_name::class##class_name;}\#define IMPLEMENT_DYNAMIC (class_name,base_class_name)\
_IMPLEMENT_RUNTIMECLASS (class_name,base_class_name,0xffff,NULL)有人能给我解释这段宏吗 ?
尤其是static char _lpsz##class_name[] =# class_name;\ 这个=#是什么用法
那么 _lpsz##class_name[]也就等于是 _lpszshit
##符号就是把前后连起来作为一个的意思。这个问题我也问过
不过 下面还有 一些 问题
CRuntimeClass *class_name::GetRuntimeClass() const
这句话中是什么 意思啊
CRuntimeClass 是个结构类型 GetRuntimeClass() const 是个函数
CRuntimeClass * 这是定义结构类型的指针 那class_name:: 这个搞在这里是什么