mfc入门基础(六)创建模态对话框与非模态对话框

2023-11-17

参考博客:

VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)-软件开发-鸡啄米

一、创建模态对话框

1、接着上节中的test02的例子来讲,找到test02.cpp文件,找到函数InitInstance()

然后,因为上节我们实现了个计算的例子,所以这边就看这个计算例子里自动生成的代码,

如下:

Ctest02Dlg dlg; // 定义对话框类Ctest02Dlg的对象dlg  
	m_pMainWnd = &dlg;  // 将dlg设为主窗口  
	INT_PTR nResponse = dlg.DoModal();   // 弹出对话框dlg,并将DoModal函数的返回值(退出时点击按钮的ID)赋值给nResponse  
	if (nResponse == IDOK)  
	{
		// TODO: 在此放置处理何时用
		//  “确定”来关闭对话框的代码
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用
		//  “取消”来关闭对话框的代码
	}

2、自定义创建个新的模态对话框界面,实现步骤如下:先进行资源视图找到Dialog,然后插入新的对话框,如下:

 3、修改对话框的名字和ID,如下:

 4、添加个静态文本,添加效果如下:,更改下Caption

5、选择对话框模板,右键点击,选择添加类,设置类名CTipDlg如下:在解决方案中可以看到,

生成了CTipDlg类的头文件TipDlg.h和源文件TipDlg.cpp

 

 6、开始引入头文件,如下:

 7、在OnBnClickedAddButton()函数中进行添加,里面给加数和被加数进行赋值的部位,我就直接跳过了,因为上节有讲,mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量_Littlehero_121的博客-CSDN博客

void Ctest02Dlg::OnBnClickedAddButton()
{
	// TODO: 在此添加控件通知处理程序代码 
	 INT_PTR nRes;             // 用于保存DoModal函数的返回值   
	 CTipDlg tipDlg;           // 构造对话框类CTipDlg的实例   
	 nRes = tipDlg.DoModal();  // 弹出对话框   
	 if (IDCANCEL == nRes)     // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否则继续向下执行   
		 return;   

	 // 将各控件中的数据保存到相应的变量   
	 UpdateData(TRUE);   

	 // 将被加数和加数的加和赋值给m_editSum   
	 m_editSum = m_editSummand + m_editAddend;   

	 // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
	 UpdateData(FALSE);   
}

最终实现效果如下:

 二、非模态对话框,实现效果如下:

1、找到test02Dlg.h文件,然后进行创建个指针对象,构造函数中进行赋值,实现效果如下:

 

 2、删除掉原先:void Ctest02Dlg::OnBnClickedAddButton()中的值,重新输入代码如下:

// TODO: 在此添加控件通知处理程序代码 
	// 如果指针变量m_pTipDlg的值为NULL,则对话框还未创建,需要动态创建   
	if (NULL == m_pTipDlg)   
	{   
		// 创建非模态对话框实例   
		m_pTipDlg = new CTipDlg();   
		m_pTipDlg->Create(IDD_TIP_DIALOG, this);   
	}   
	// 显示非模态对话框   
	m_pTipDlg->ShowWindow(SW_SHOW);   

	// 将各控件中的数据保存到相应的变量   
	UpdateData(TRUE);  //此处的TRUE可加可不加,因为默认是TRUE 

	// 将被加数和加数的加和赋值给m_editSum   
	m_editSum = m_editSummand + m_editAddend;   

	// 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
	UpdateData(FALSE);   

3、因为非模态对话框实例是动态创建的,所以需要手动删除此动态对象来销毁对话框,MFC中不会自动添加析构函数,所以这边需要自己手动创建个,析构函数声明:~Ctest02Dlg();

Ctest02Dlg::~Ctest02Dlg()
{
	// 如果非模态对话框已经创建则删除它   
	if (NULL != m_pTipDlg)   
	{   
		// 删除非模态对话框对象   
		delete m_pTipDlg;   
	}   
}

4、最终实现效果如下:(标注的对话框可以进行拖动的)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mfc入门基础(六)创建模态对话框与非模态对话框 的相关文章

随机推荐

  • spark写表指定外部表_Spark SQL 之自定义删除外部表

    Spark SQL 之自定义删除外部表 前言 Spark SQL 在删除外部表时 本不能删除外部表的数据的 本篇文章主要介绍如何修改 Spark SQL 源码实现在删除外部表的时候 可以带额外选项来删除外部表的数据 本文的环境是我一直使用的
  • 《万字长文带你解读AIGC》系列之技术篇

    欢迎关注 CVHub 官方微信公众号 前景回顾 Welcome to back 在 万字长文带你解读AIGC入门篇 一文中 我们详细为大家介绍了AIGC的相关概念 背景及其如此火爆的原因 接下来我们将进一步深入探讨AIGC背后的技术栈 作为
  • 【论文党福利】如何提取图像中的数据

    论文党福利 如何提取图像中的数据 从事科研的老师和同学们在撰写论文时 经常需要将文献中的曲线与自己的结果进行对比 为获取原始数据 最靠谱的方法当然是找原作者要 如果没有要到呢 本文将成为论文党的福利 为你提供你两种解决方案 均是用matla
  • Vue2.0+webpack 引入字体文件(eot,ttf,woff)

    webpack base config js 需要配置 test woff2 eot ttf otf loader url loader options limit 10000 name utils assetsPath fonts nam
  • 图形学相关期刊和会议的基本信息

    目录 期刊 A类 ACM TOG A类 IEEE TIP A类 IEEE TVCG B类 TOMCCAP B类 CAGD B类 CGF B类 CAD B类 GM B类 TCSVT B类 TMM B类 SIIMS C类 CGTA C类 CAV
  • Webshell工具的流量特征分析(菜刀,蚁剑,冰蝎,哥斯拉)

    0x00 前言 使用各种的shell工具获取到目标权限 即可进行数据操作 今天来简要分析一下目前常使用的各类shell管理工具的流量特诊 帮助蓝队同学在风险识别上快速初值 0x01 中国菜刀流量分析 payload特征 PHP ASP AS
  • ElasticSearch系列-索引原理与数据读写流程详解

    索引原理 倒排索引 倒排索引 Inverted Index 也叫反向索引 有反向索引必有正向索引 通俗地来讲 正向索引是通过key找value 反向索引则是通过value找key ES底层在检索时底层使用的就是倒排索引 索引模型 现有索引和
  • JAVA(Object和String)一 Object类和String字符串的理解和使用

    JAVA Object和String 一 Object类和String字符串的理解和使用 Object类 String类 Object类 理解 在JAVA中有一个非常特殊的类叫做Object类 JAVA里面所有的类都继承自Object类 我
  • Git下载/查看/切换/新建分支

    1 git下载指定分支代码 git clone b branchname https github com xxx xxx git 2 看分支 git branch 列出本地已经存在的分支 并且当前分支会用 标记 git branch r
  • Element ui Dialog弹出框宽度固定不变

    一般我们引用Dialog弹出框时 弹出框的大小都是用width 30 这样来设置 这样的话我们在缩小屏幕的时候弹出框就会根据你缩小屏幕的宽度的百分比来设置 这样你弹出框里面的东西就会溢出 如果你不想溢出就把宽度写成width 500px 这
  • 文件上传服务器例子,服务器端的程序优化

    package cn dali4 code04ex 此程序优化了文件名 这样可以随机生成文件名 给服务器写了循环 可以一直监听 开启了多线程 优化了执行的效率 import java io import java net ServerSoc
  • C++代码注释详解

    常用注释语法 注释写在对应的函数或变量前面 JavaDoc类型的多行注释风格如下 这里为注释 一般注释中有简要注释和详细注释 简要注释有多种标识方式 这里推荐使用 brief命令强制说明 例如 brief 这里为简要注释 这里为详细注释 b
  • 正确使用g2o各类线性方程求解器

    g2o LinearSolverEigen g2o LinearSolverDense g2o LinearSolverCSparse g2o LinearSolverCholmod是常用的线性方程求解器 一套可运行程序 包括不同梯度下降优
  • Python中的异常处理raise介绍

    文章目录 0 介绍 1 raise 介绍 案例 2 raise 不需要参数 案例 3 raise 单独一个 raise 正常程序使用无参的 raise 4 其它案例 4 1 案例1 4 2 案例2 5 处理流程 总结 0 介绍 问题1 是否
  • eslint 搭配 vscode 的简单使用

    前言 刚开始时 由于嫌麻烦 并没有安装eslint 最近在新的项目上使用了eslint再配合vscode的插件 真是爽的不要太爽 因此打算写一篇简单的食用说明来记录食用过程 前期准备 没啥好准备的 作为开发肯定是具备yarn和node的 编
  • WINDOWS键盘钩子

    最近有个需求做的时候碰到需要捕获某个程序的特定按键并且在该程序处于焦点并且按下特定键 如F1 时让主板的蜂鸣器响一声以提示 由于该程序没有源码 因此只能通过编写服务挂全局钩子来对该程序的键盘消息进行捕获 大致的代码结构是使用VC现编写了一个
  • Linux Debian上快速安装Docker并运行

    要在Debian上安装Docker 可以按照以下步骤进行 更新系统软件包 在终端中执行以下命令 更新系统软件包 sudo apt get update 安装依赖包 在终端中执行以下命令 安装Docker需要的依赖包 sudo apt get
  • Echarts折线图x轴刻度距离

    在 ECharts 折线图中 x 轴刻度的距离是根据数据的数量和实际绘图区域的宽度来确定的 ECharts 会根据数据的数量自动计算出 x 轴上每个刻度之间的距离 以适应绘图区域的宽度 如果希望手动设置 x 轴刻度的距离 可以使用以下两种方
  • 解决PowerDesigner里允许字段重名约束的设置问题

    让tomcat支持中文路径名 将conf server xml中的
  • mfc入门基础(六)创建模态对话框与非模态对话框

    参考博客 VS2010 MFC编程入门之十一 对话框 模态对话框及其弹出过程 软件开发 鸡啄米 一 创建模态对话框 1 接着上节中的test02的例子来讲 找到test02 cpp文件 找到函数InitInstance 然后 因为上节我们实