MFC中模态和非模态对话框
来源:互联网 发布:js的数据类型 编辑:程序博客网 时间:2024/06/05 05:47
参考博客:http://www.cnblogs.com/ikangkang/p/5965168.html
1.简述
1.1模态对话框(model dialog box)
当模态对话框显示时,程序会暂停执行,直到关闭这个模态对话框之后,才能执行程序中的其他任务。点击模态对话框中的OK按钮,模态对话框会被销毁。
1.2非模态对话框(modeless dialog box)
当非模态对话框显示时,需要显示的调用ShowWindow()才能将对话框显示出来,运行转而执行程序中的其他任务,而不用关闭这个对话框。
点击非模态对话框中的OK按钮,非模态对话框没有销毁,只是隐藏了。若想点击OK按钮时,非模态对话框也销毁,那么CTestDialog类必须重载其基类CDialog的虚函数OnOK(),在此函数里调用DestroyWindow()来销毁此对话框。
2.代码
2.1模态对话框的实现
void CModelCtrDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 TestDialog1 dlg; dlg.DoModal();}
TestDialog1是我创建的一个对话框相关的对话框类。
CDialog::DoModel:该函数的功能就是创建并显示一个模态对话框。
2.2非模态对话框实现
void CModelCtrDlg::OnBnClickedButton2(){ // TODO: 在此添加控件通知处理程序代码 TestDialog2 *dlg = new TestDialog2; dlg->Create(IDD_DIALOG2);//创建一个非模态对话框 IDD_DIALOG2是我创建的一对话框ID dlg->ShowWindow(SW_SHOWNORMAL);//显示非模态对话框}
上面程序因为dlg指针变量是在堆上存储的, 且只有程序结束才能释放, 如果要手动释放的话要增加额外的代码,因此这种写法不太合适。
2.2.1改进代码
首先在主对话框创建一个TestDialog2类型成员指针变量:
private: TestDialog2 *dlg;
再在相应的function加上以下代码:
dlg = new TestDialog2; dlg->Create(IDD_DIALOG2);//创建一个非模态对话框 IDD_DIALOG2是我创建的一对话框ID dlg->ShowWindow(SW_SHOWNORMAL);//显示非模态对话框
最后在主对话框类析构函数中加入
delete dlg;
阅读全文
0 0
- MFC中模态对话框和非模态对话框
- MFC中模态和非模态对话框
- MFC中模态对话框和非模态对话框的区别?
- MFC中模态对话框和非模态对话框的区别
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC 模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC模态对话框和非模态对话框
- MFC 模态对话框和非模态对话框
- 关于8个基本数据类型及他们的封装类
- spring boot-application.properties配置文件属性
- Java I/O 工作机制
- 归并排序
- Android Wi-Fi wpa_supplicant 初始化流程图
- MFC中模态和非模态对话框
- opendss
- 文件上传下载解决乱码问题
- Angularjs中的$Http与$resource
- jq和js的区别
- Jquery Easyui验证组件ValidateBox使用详解
- 版本控制器---GitHub浅学
- 使用Xshell在Windows系统和Linux系统之间进行文件传输
- 嵌入式学习日记(十三)