书本上说运行时类型识别是靠这两个宏DECLARE_DYNAMIC/IMJPLEMENT_DYNAMIC
把/CRuntimeClass对象塞到类中的
那他是什么时候被放进去的,是不是在构造函数时候! 运行时类型识别是不是也在构造函数时被构造!
还有里边的宏讲得不清楚,可能是我欠却了知识点.能不能提供一些关于宏的定义的语法资料.
我说知道的宏定义应该是这样的啊:
#define xxxxx xxxxx
他里边怎么可以是这样的
DECLARE_DYNAMIC(CView)

解决方案 »

  1.   

    宏由编译器在编译之前展。

    #define PI 3.1415926
    则 s = r*r*PI被展开为s= r*r*3.1415926带参数的宏如:
    #define SQUARE(X) ((X)*(X))
    s= SQUARE(r)*PI被展开为s = ((r)*(r))*3.1415926DECLARE_DYNAMIC(class)的展开式,书上有。
      

  2.   

    为什么不用#define号呢
    还有
    那个CRuntimeClass结构里边
    两个域
    m_pBaseClass //指向父类
    m-pNextClass// 指向下一个类
    我这样理解对?书上说mfc的追踪路线是延着m_pBassClass 上去的,那要m_pNextClass 干什么???
      

  3.   

    宏的定义己经在MFC的头文件中定义过了,没有必要自己写,所以看不到#define 这样的语句。如果想找到它的定义的话,选定DECLARE_DYNCREATE,单击右键,选取go to declaretion就行了。m_pBaseClass只能得到父类的CRuntimeClass结构,顺道些链上来只能得到某个类,有其父类的信息,而不能得到所有类的信息。追踪路线应该是延着m_pNextClass上去的。在用IsKindOf时才是延着m_pBaseClass上去的。