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 两个,删掉之后,不用为它添加一个类也能正确的弹出来窗口了。但是我现在想问,为什么有那两个控件,会导致窗口弹出失败,那两个具体是干什么的,怎么用。 展开
然后我就想测试一下代码二那种直接写资源窗口的 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 两个,删掉之后,不用为它添加一个类也能正确的弹出来窗口了。但是我现在想问,为什么有那两个控件,会导致窗口弹出失败,那两个具体是干什么的,怎么用。 展开
2个回答
展开全部
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一定要有一个类支持
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询