MFC窗口的小问题,简单易解 5

第一段代码,我为Create的第一个窗口添加了一个类。这样写就能显示一个窗口。然后我就想测试一下代码二那种直接写资源窗口的IDD(没有为这个资源添加一个类),结果每次运行... 第一段代码,我为Create的第一个窗口添加了一个类。这样写就能显示一个窗口。
然后我就想测试一下代码二那种直接写资源窗口的 IDD(没有为这个资源添加一个类),结果每次运行就会报错。我的想法是,CDialog是窗口的基类,我用基类的指针来创建一个以IDD_DIALOG2为模型的窗口,运行中会弹出断言。
我个人以为可以不为它绑定一个窗口类,这样写起来就简化了很多。但是又没想到哪里错了。
是必须要为它绑定一个窗口类,还是我的代码哪里有点小错误。
还有一个问题就是类里面的enum{ IDD = DIALOG1 }这个枚举里面,我能否添加多个枚举变量来标记不同的窗口资源。

代码一:
DIALOG1 *D =new DIALOG1();
D->Create(DIALOG1::IDD,this);
D->ShowWindow(SW_SHOW);

代码二:
CDialog *d =new CDialog();
d->Create(IDD_DIALOG2,this);
d->ShowWindow(SW_SHOW);
补充问题:

我已经找到问题的原因了。我把第二段代码的窗口上面的控件修改了一下,就好了。本来之前只有两个控件,一个custom control 和 mfcbutton 两个,删掉之后,不用为它添加一个类也能正确的弹出来窗口了。但是我现在想问,为什么有那两个控件,会导致窗口弹出失败,那两个具体是干什么的,怎么用。
展开
 我来答
bai_lj
2014-12-24 · TA获得超过276个赞
知道小有建树答主
回答量:505
采纳率:77%
帮助的人:282万
展开全部

1、首先上面两种代码都没有错。

2、类里面的enum{ IDD = DIALOG1 }这个枚举里面,添加多个枚举变量来标记不同的窗口资源,也没有问题。

3、资源可以不绑定窗口类,也可以运行时绑定。

void CTestDialogDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(m_CTestDialogDlg)
delete m_CTestDialogDlg;
m_CTestDialogDlg=new CTestDialogDlg();
m_CTestDialogDlg->Create(CTestDialogDlg::IDD,this);
m_CTestDialogDlg->ShowWindow(SW_SHOW);

}

void CTestDialogDlg::OnBnClickedButton2()
{
if(m_CDialogDlg)
delete m_CDialogDlg;
m_CDialogDlg=new CDialog();
m_CDialogDlg->Create(CTestDialogDlg::IDD,this);
m_CDialogDlg->ShowWindow(SW_SHOW);
}
追问
非常感谢您。不过我还有个补充问题,我没明白。
追答
Custom Control控件在使用前一定要初始化,否则会报错.
一个Custom Control控件的class一定要有一个类支持
百度网友1d87ec3
2014-12-24 · 超过10用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:22.8万
展开全部
派生类如果和基类一样,继承后直接显示看着是一样的,就像什么都没加控件。加了后的派生类和基类不一样,这时候再用基类实例化,肯定会出现没定义的控件,自然出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式