pFirstClass 哪里去了?

whatsblog 2008-02-27 04:45:14
深入浅出MFC
里面讲到CRuntimeClass::pFirstClass,但是在vs 2003下面CRuntimeClass的定义里面没有,
请问如何打印出从CView->...->CObject的类继承结构?
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
s003d 2009-06-06
  • 打赏
  • 举报
回复
GetRuntimeClass()函数返回的是当前对象的CRuntimeClass静态成员地址,
而CRuntimeClass::pFirstClass指向的是当前RuntimeClass列表中最后一个
成员,因为不存在动态创建新类,所以理论上在程序运行到main或者WinMain入口之前
pFirstClass就已经确定,除非强行复制,应该是不会再变了,两者之间没有必然关系
s003d 2009-06-06
  • 打赏
  • 举报
回复
深入浅出MFC的版本比较老了,你看的新版本的MFC的已经去除用静态变量pFirstClass
来找所有RunTimeClass链表的方法,改为直接将每个类的静态RunTimeClass成员加入到队列
类AFX_MODULE_STATE的成员变量m_classList中
见Afxstat_.h中AFX_MODULE_STATE的定义
CTypedSimpleList<CRuntimeClass*> m_classList;
而且仅仅针对需要实现Serialize的类才加入此列表中,
见Afx.h中的IMPLEMENT_SERIAL宏实现以及
Objcore.cpp中的AfxClassInit函数实现

whatsblog 2008-02-29
  • 打赏
  • 举报
回复
不知道CRuntimeClass::pFirstClass 和 GetRuntimeClass() 有什么区别?
alunlee 2008-02-27
  • 打赏
  • 举报
回复
关注中...
whatsblog 2008-02-27
  • 打赏
  • 举报
回复
谢谢先.

我看过这个,但是他里面也用到了CRuntimeClass::pFirstClass, VC6里面可能有,但在vs 2003下没有,所以才来找大虾求助的.
mr.zhoux 2008-02-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/angelvan2008/archive/2005/03/08/314800.aspx
应该对你有点用

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧