请问有什么好办法学习《深入浅出MFC》第三章的??

Virus2003 2003-08-24 11:49:25
我看了好几遍都是模模糊糊的,似懂非懂,有的程序能看懂,可是要让我自己来写就要发呆了,请问有什么好办法??

我看完的感觉是侯老师一直在说CRuntimeClass的使用,可是他不断地对CRumtimeClass进行添加,添加的成员在msdn上根本查不到,还总是把那些宏都展开,我感觉是有点分散注意力了,不知道有谁看过,而且较为精通的,愿意详细为我这个菜鸟解释解释这章的内容???

小弟是在感激不尽!!!!!!
...全文
33 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chanet 2003-08-25
  • 打赏
  • 举报
回复
转个贴你看看... (如果不太明白,就跳吧~)

CRuntimeClass的应用
闻怡洋

CRuntimeClass在MFC中的作用很重要,因为MFC利用它来进行类的动态确定,即是通过类变量来判定该变量是否为某一类的实例。由于指针的类型是可以转换的,所以时常会出现从A到B的转换导致错误。而在MFC的各种书籍中对CRuntimeClass的介绍是比较少的,在这里总结它的一些用法。
1、动态确定类
在MFC中CObject::IsKindOf( const CRuntimeClass* pClass ) 利用CRuntimeClass来进行判定,如果你生成的类是以CObject为基础的,你可以使用该成员函数来判定。下面举一个例子来加深了解。
class CAge:public CObject
BOOL IsAge(CObject* pO)
{
return pO->IsKindOf( RUNTIME_CLASS( CAge ) );
}
BOOL IsAge2(CAge* pO)
{
return pO->IsKindOf( RUNTIME_CLASS( CAge ) );
}
void main(void)
{
CObject a;
CAge b;
IsAge(&a);//return FALSE
IsAge(&b);//return TRUE
IsAge2((CAge*)&a);//return FALSE,避免强制转换带来的错误
}
2、生成类
CObject CRuntimeClass::CreateObject(void)可以产生一个类变量。作用和new类似,但在某些特殊场合有独特的作用。下面举一个例子来加深了解。
假定有以下几个类定义
class CWndA: public CWnd
class CWndB: public CWnd
function1()
{
CRuntimeClass* pC=RUNTIME_CLASS( CWndA );
CreateWnd(pC);
}
CWnd* CreateWnd(CRuntimeClass* pClass)
{
return (CWnd*)pClass->CreateObject();
}
在上面例子中,CreateWnd返回的是CWnd* 其实它是一个CWndA*。你可以进行由父类到子类的强制转换而不必要担心出错。使用CRuntimeClass可以代替使用switch生产类实例的一些繁琐。(请好好想想它的用途,当你发现它的好处时,你一定会大吃一惊,M$使用宏来实现类的动态检测,如果谁有兴趣可以去看看MFC的源代码。)
注意:在类的定义中使用IMPLEMENT_DYNCREATE后方可生效。
chanet 2003-08-25
  • 打赏
  • 举报
回复
呵呵,我当时跳过啦... 因为我还没有到这个境界... :)
之后直接看 消息表 ... 现在看回头,比第一次看明了许多~

主要是时间和理解能力问题~~


比如:一个对Windows不太熟悉的,跟他讲 工具栏 这一概念,会很抽象~~

(以上属个人当初学的时候的看法)
Napoleo 2003-08-25
  • 打赏
  • 举报
回复
浏览,不懂的跳过,以后回头再看,不必强求
Virus2003 2003-08-25
  • 打赏
  • 举报
回复
书上的那几个例子看不太懂,有没有什么写得比较简单明了的,没有对CRuntimeClass进行修改的例子????
Virus2003 2003-08-25
  • 打赏
  • 举报
回复
主要是觉得书上写的代码比较乱,DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC,IsKindOf,DECLARE_DYCREATE和IMPLEMENT_DYCREATE到底该如何使用,看得不明白??

侯老师在书上对CRuntimeClass不断的添加,所以看得不太明白了,是不是我们自己写程序的时候也要像他一样,对CRuntimeClass进行修改呢??
wwfhjg 2003-08-25
  • 打赏
  • 举报
回复
不懂的跳过,以后回头再看,不必强求
alickguo 2003-08-25
  • 打赏
  • 举报
回复
看不懂,就先跳过,过段时间回过来再看看,会有收获的。
laodie 2003-08-25
  • 打赏
  • 举报
回复
问的不清不楚,答的不明不白.
为了大家一起进步,能否将问题细化,到底哪些地方不明白,让咱一个一个来.
Virus2003 2003-08-25
  • 打赏
  • 举报
回复
我来顶一下

16,471

社区成员

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

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

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