MFC学习之模态对话框和非模态对话框


1,打开VS2012,新建项目,选择MFC应用程序,然后选择基于对话框类型,这时候会产生CAboutDlg,CxxxxApp和CxxxxDlg(xxxx是你的项目名)

2,然后在资源视图中Dialog可以看到IDD_ABOUTBOX和IDD_xxxxDialog ,选中IDD_xxxxDialog按Ctrl+A键可以选中该对话框中的所有东西,然后按Delete键可以全部删掉

3,选中IDD_xxxxDIalog单击右键,点击属性,可以再外观一栏中看到caption,可以借此修改你的对话框的名称。

4,打开工具栏,选中并拖动BUTTON到该对话框中,这时候我们拖动两个,即BUTTON1和BUTTON2放到此对话框中。BUTTON修改名字可以和对话框修改名字的方式相同,也可以直接在对话框中选中BUTTON(不要双击),然后输入你想要修改的名字,我们这里名字选择“模态对话框”和“非模态对话框”

5,在资源视图中选中Dialog单击右键,选择插入Dialog,这时候在Dialog下面会生成一个IDD_Dialog1的对话框,这个IDD_Dialog1就是对话框的ID,选中IDD_Dialog1单击右键,选择属性即可更改名称,这里改为IDD_MODELDlg,再双击击IDD_MODELDlg对话框,这时会弹出一个添加类向导的框(或者直接在项目中找到添加类的选项),填入类名,我们这里写入CModelDlg,这时候查看类视图,就会发现多了一个CModelDlg类;同理插入IDD_UNMODELDlg。

6,然后我们在资源视图中找到Dialog,找到IDD_xxxxDIalog,双击"模态对话框",就会跳转到xxxxDlg.cpp中添加代码的地方:我们添加以下两行代码,记住如果这时候只添加这两行代码的话会报错,我们还需要在.cpp文件添加:#include“ModelDlg”(类名以C开头的,再添加头文件时要去掉C)

void CMFCApplication2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CModelDlg dlg;
dlg.DoModal();
}

7,此时我们可以调试一下啦,在运行弹出的对话框中点击“模态对话框”,就会弹出一个模态的对话框了。

8,在创建非模态对话框时稍有区别:

void CdialogboxDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
//CDlgUnmodel unmodeldlg;
//创建
//unmodeldlg.Create(IDD_UNMODEL);//创建窗口只能创建一次,多次就会崩掉。把它放到OnInitDialog里面初始化
//显示
//没有阻塞功能,一闪而过
unmodeldlg.ShowWindow(SW_SHOWNORMAL);
//在dlg.h文件中添加成员函数
//private :
//CDlgUnmodel unmodeldlg
//添加头文件#inculde"DlgUNmodel.h"
}

9,OK,到此为止,我们已经创建好了模态和非模态对话框

猜你喜欢

转载自www.cnblogs.com/sunflowers-lanqijiu/p/11809583.html