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

模态对话框(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();
}

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

019.MFC_两种对话框的更多相关文章

  1. mfc 在VC的两个对话框类中传递参数的三种方法

    弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...

  2. 在vc6.0下编的对话框界面如果没做过其他处理,往往显的很生硬,怎么样才能使他有Windows XP的风格呢,其实也很简单,我们来看看下面两种方法。

    在vc6.0下编的对话框界面如果没做过其他处理,往往显的很生硬,怎么样才能使他有Windows XP的风格呢,其实也很简单,我们来看看下面两种方法.    方法一: 1.首先确认你在Windows   ...

  3. C#实现Dll(OCX)控件自动注册的两种方法 网上找的 然后 自己试了试 还是可以用的

    尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...

  4. .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格

    一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...

  5. C++连接mysql的两种方式(ADO连接和mysql api连接)

    一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上)  ...

  6. ASP.NET MVC 下拉框的传值的两种方式

    以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownL ...

  7. javascript文件夹选择框的两种解决方案

    javascript文件夹选择框的两种解决方案 解决方案1:调用windows 的shell,但会有安全问题. * browseFolder.js * 该文件定义了BrowseFolder()函数,它 ...

  8. Log4Net日志记录两种方式

     简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.     log4net是Ap ...

  9. c++のdll两种调用方式

    调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youApp. ...

随机推荐

  1. 搜索docker镜像

    docker最简单的方式莫过于从现有的容器镜像开始. Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io. 可以通过浏览这个网页来查找你想要使用的镜像,或者 ...

  2. List<object> 转 List<T>

    List<TAXIWAY_CENTER_LINE> kk = allObjs.Where(c => c.ToString() == "AMXM.TAXIWAY_CENTER ...

  3. Java练习 SDUT-1580_闰年

    闰年 Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 时间过得真快啊,又要过年了,同时,我们的人生也增长了一年的阅历,又 ...

  4. [***]HZOJ 哪一天她能重回我身边

    %%%神仙题. 居然是图论,我还一直以为是二分图或者啥数据结构. 直接说正解了,将数看作节点,牌看做边,从牌的正面的数想反面连边权为1的边,反面向正面连边权为0的边(注意用到成对存储的技巧,之后会非常 ...

  5. 从 Apache ORC 到 Apache Calcite | 2019大数据技术公开课第一季《技术人生专访》

    摘要: 什么是Apache ORC开源项目?主流的开源列存格式ORC和Parquet有何区别?MaxCompute为什么选择ORC? 如何一步步成为committer和加入PMC的?在阿里和Uber总 ...

  6. hdu 3264 Open-air shopping malls(圆相交面积+二分)

    Open-air shopping malls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  7. H3C MDI/MDIX

  8. H3C ISDN BRI和PRI

  9. 洛谷P5019 铺设道路 题解 模拟/贪心基础题

    题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...

  10. Java 参数的值传递和引用传递

    在Java中,方法的参数的传递分为值传递(基本数据)和引用传递(引用数据:对象.字符串),这是最容易接受的.如果你能知道有这两种情况存在,那么,在遇到调用方法时,你可以避免很多问题的产生.但是,仔细查 ...