#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;\  这个=#是什么用法

解决方案 »

  1.   

    举个列子  class_name[]里面存的字串是 shit
    那么 _lpsz##class_name[]也就等于是 _lpszshit
    ##符号就是把前后连起来作为一个的意思。这个问题我也问过
      

  2.   

    我建议别为这烦人的东西费神了,这恐怕是MFC源码当中最让人头痛的东西了,我怀疑写它的人现在都不一定看得明白了,别研究这个了。
      

  3.   

    建议你去看一下候捷的深入MFC,里面有讲这些宏的具体用途,其实正如楼上所说的,知道就好了,没必要太深入研究
      

  4.   

    谢谢 楼上各位 我已知道了 
    不过 下面还有 一些 问题
    CRuntimeClass *class_name::GetRuntimeClass() const
    这句话中是什么 意思啊
    CRuntimeClass  是个结构类型    GetRuntimeClass() const 是个函数
    CRuntimeClass *  这是定义结构类型的指针   那class_name::  这个搞在这里是什么
      

  5.   

    class_name::GetRuntimeClass() 是那个类的成员函数吧、、、返回值的类型是CRuntimeClass *