对话框分为模态和非模态对话框两种

模态对话框(Modal)

d.DoModal()

必须关闭才能返回主窗口

非模态对话框(Modaless)

p->Create(IDD_DIALOG,this);

p->ShowWindow(SW_SHOW);

一、建立mfc工程,添加Edit Control组件设置属性如图

二、添加两个button 到对话框并分别设置两个button的caption属性为打开模态对话框 和 打开非模态对话框

三、在资源视图中、右键单击dialog,选择插入dialog,并设置对话框id属性为IDD_FIRST_DIALOG,右键单击选择添加类,类名填写CFirstDlg,点击确定
同理添加第二个对话框,id属性为IDD_SECOND_DIALOG,右键单击选择添加类,类名填写CSecondDlg,点击确定

四、主窗口双击打开模态对话框进入主窗口对应文件dialogDlg.cpp

在dialogDlg.cpp 文件中添加
#include "FirstDlg.h"
void CdialogDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFirstDlg dlg;
dlg.DoModal();
}
同理在主窗口双击打开非模态对话框进入主窗口对应文件dialogDlg.cpp添加
#include "SecondDlg.h"
void CdialogDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
//必须要用指针
CSecondDlg *pDlg = new CSecondDlg;
pDlg->Create(IDD_SECOND_DIALOG,this);//arg1:要创建的对话框ID,arg2:父窗口指针
pDlg->ShowWindow(SW_SHOW);
}
由于非模态对话框使用指针,所以对话框在关闭时必须将它销毁,
类视图->选中CSecondDlg->属性对话框中选择重写选中PostNcDestroy
进入SecondDlg.cpp 添加
void CSecondDlg::PostNcDestroy()
{
// TODO: 在此添加专用代码和/或调用基类
delete this;

CDialogEx::PostNcDestroy();
}

至此两种模式的对话框都已添加完毕。

最新文章

  1. 【转】【10g SQL新特性】q-quote使用
  2. XHPROF相关内容
  3. vmstat的使用(查看系统各种负载)
  4. 【设计模式】Java版设计模式的类图汇总
  5. c++ std::sort函数调用经常出现的invalidate operator<错误原因以及解决方法
  6. windows10 Build 10074版本上手体验(二)
  7. 第1章(三)安装VS2015和Xamarin For VS
  8. access的时间相关的查询
  9. 墙上时钟时间 ,用户cpu时间 ,系统cpu时间
  10. 【js实例】js中的5种基本数据类型和9种操作符
  11. Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程
  12. MyDAL - .QueryOneAsync() 使用
  13. 「FFT」题单(upd 2019.4.28)
  14. java格式化
  15. 设置placeholder无效解决办法
  16. Apache2.4反向代理设置
  17. fiddler filter过滤+断点
  18. PAT 1067 试密码
  19. linq的左连接右连接内连接用法
  20. 为什么要重写toString()方法和hashcode()方法

热门文章

  1. 【错误收集】SVN冲突解决 标签: 错误收集 2016-03-13 08:44 624人阅读 评论(24) 收藏
  2. 实现一个简易的promise
  3. Java面向对象----Java面向对象(OOP)概念
  4. Ubuntu+Apache+PHP+Mysql环境搭建(完整版)(转)
  5. 什么是Hessian协议呢?
  6. 2019-8-31-dotnet-通过-WMI-获取系统补丁
  7. Part17—触摸屏显身手—Part17.1—原理简介
  8. Python基础10 回顾
  9. stl_tree.h/insert_unique()
  10. codeforces 1230 div2