第1个回答 2007-08-06
不要把CDialog与CWnd当成类的特殊情况,你问为什么要从CWnd派生出CDialog类来,我认为,一句话是方便使用.就像你问为什么要把某些东西封装成类一样的道理.
CDialog与CWnd有什么区别,这个从类的继承关系来看,CDialog包函CWnd,所以说,他们的不同在于CDialog比CWnd拥有更多的成员函数或者成员变量可以使用.
从使用角度来看,CDialog是作为更适合用来显示对话框的窗口的而设计的,而CWnd则比较广泛的可用于显示任何类型的窗口,包括一个按钮,当然,我们也可以使用CWnd类来显示对话框窗口,只要你不会觉得麻烦了点.
第2个回答 2007-08-06
CDialog类继承自Cwnd类CDialog针对对话框窗体所专门设计的类 它只要使用父类的成员函数 也可以达到Cwnd类效果.而Cwnd类创建的是通用的窗体 比如文档视图之类的.
---------------------------------
Cwnd 是用API函数创建窗口??? 看看MFC类图 Cwnd是MFC二级类.
--------传说中的分隔线----------------------------
继承概念你因该去了解先.有区别 Cwnd属于概念类 一般来说设计窗体都不会使用它 都会使用相应的三级类 比如CDialog,CView类等 它们都有自已的作用 就算是使用Cwnd类 也不能创建有三级类的那些特性.
不如全改Cwnd? 那不如说全部改成CObject.把所有类的方法都加到CObject类中去 就都不用其它类了.呵 那就无层次结构而言了....这样 我也不知道如何说它的坏处.呵.