关于一些继承的问题

rokia 2000-10-22 05:42:00

我做了一个基于对话框的程序 类名叫 CMyDlg

然后又做了一个对话框,创建了一个类叫 CTempDlg,我想把CMyDlg做为它的父类。可是出了一个问题:

CTempDlg dlg;
dlg.DoModal();
执行这个语句以后,出现的是CMyDlg对应的那个对话框,而不是CTempDlg的那个。
怎么解决?

另外,每个对话框类是如何知道该使用哪个对话框资源呢
还有,是不是子类会把父类的消息映射也继承过来呢?

谢了。
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rokia 2000-10-22
  • 打赏
  • 举报
回复
zhq2000: 我加上了CTempDlg::CTempDlg(CWnd * pParent):CMyDlg(IDD,pParent) { };
可是 编译出错 :
D:\Program Files\Microsoft Visual Studio\MyProjects\复件 HeartSensor\TEMPDLG.cpp(20) : error C2660: 'CHeartSensorDlg::CHeartSensorDlg' : function does not take 2 parameters

是怎么回事呢? 谢谢。

leer 2000-10-22
  • 打赏
  • 举报
回复
继承的方法:
CTempDlg : publice CMyDlg{};
至于对话框的资源是通过构造函数的IDD传递的,其值是在头文件中定义的
你去看看他的值就明白了。
子类会继承父类的消息映射。但如果子类映射与父类相同的消息,该消息
将由子类处理而不会传给父类。

rokia你好,从你的问题中可以看出你没有学过C++,因此我建议你现在先去学C++。
等你学完C++再回来学MFC,你会发现MFC并不难。
zhq2000 2000-10-22
  • 打赏
  • 举报
回复
1. 在CTempDlg的构造函数中加入代码 CMyDlg(IDD , pParent);
CTempDlg::CTempDlg(CWnd * pParent):CMyDlg(IDD,pParent) { };

2. 资源必须指定。

3. 子类继承父类的一切(private除外),也包括消息映射。在MFC中,应用程序收到消息时,先在子类中找对应的处理函数,如找不到,则向其父类找.

16,472

社区成员

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

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

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