MFC编程之设计美丽的对话框

目录

写在前面:

Part 1:美美的设计一下计算器的布局

1.描述文字:

​编辑

2.ID:

Part 2:美美熟悉一下计算器的工作流程

Part 3:美美设计一下控件功能

1.edit control:

2.相关变量初始化:

3.button:

3.1运算符按键

3.2数字按键

3.3关于UpdateData()函数

3.4清零按键

3.5等号按键


写在前面:

        接上集,我们已经创建好了一个什么用都没有的对话框,我们要做一个简易的计算器,就需要以下几个控件,如果不懂下面的界面是咋出来的建议复习上一集:

点我来上滑湿人自己的MFC第一课!

1.edit control:用来显示计算器的表达式和结果

2.button:用来输入表达式并进行相关运算

3.group:用来框柱单选框,提示用户同一框架下的若干选项

4.radio button:用于三角函数与对数的运算

5.text:用于文本的提示

Part 1:美美的设计一下计算器的布局

修改按钮相应的属性:

打开对话框,右键按钮,选择属性,会在屏幕右侧出现一个属性框,这个就是该控件对应的属性,此时单击其他的控件,会变成被点击的控件的属性,这里我们需要改这几项:

1.描述文字:

这个代表的是运行时这个按钮上面显示的文字

2.ID:

这个代表的是这个按钮在程序中相关的函数中出现时的名称

Part 2:美美熟悉一下计算器的工作流程

        计算器要先完成基本的加减乘除,就需要有一个变量用来存储我们输入的第一个数(tempvalue),还需要一个变量用来存储结果的值(result),还需要一个变量判断进行的运算(sort),还需要一个变量判断后面是否添加数字(append)。

下图展示了一个计算器的基本的运行流程:

Part 3:美美设计一下控件功能

1.edit control:

        首先,编辑框想要显示变量,就需要有一个变量用来存储它要显示的值,因此我们为其添加变量,定义变量名称为m_edit1。

        我们需要先右键编辑框,之后添加变量,类别更改为“值”,输入名称为“m_edit1”,变量类型选择“double”,之后点击完成。

2.相关变量初始化:

        前面我们提到了,我们需要用到变量tempvalue,result,sort和append,根据他们的用途,我们将前两个变量定义为double型,便于我们后续添加小数点的功能;后两个是状态的判断,因此我们将其设定为int型。

        首先,在解决方案资源管理器中打开名为“项目名Dlg.h”的头文件,找到名为“class CcalculatorDlg : public CDialogEx”的类,添加这四个变量,访问权限限定为public,修改后程序如下:

class CcalculatorDlg : public CDialogEx
{
// 构造
public:CcalculatorDlg(CWnd* pParent = nullptr);	// 标准构造函数
public:double tempvalue;double result;int sort;int append;
// 对话框数据...
}

  之后,在解决方案资源管理器中打开名为“项目名Dlg.cpp”的源文件,找到名为“CcalculatorDlg::CcalculatorDlg(CWnd* pParent /*=nullptr*/)”的构造函数,将这四个变量初始化为合适的值,修改后程序如下: 

CcalculatorDlg::CcalculatorDlg(CWnd* pParent /*=nullptr*/)//构造函数: CDialogEx(IDD_CALCULATOR_DIALOG, pParent), m_edit1(0)
{tempvalue = 0;//临时值result = 0;//结果值sort = 0;//计算法则判断 1+   2-   3*   4/append = 0;//判断后续是否输入数字:  1输入   0不输入point = 0;//未输入小数点count = 1;//0:未输入小数部分m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
3.button:

        在对话框中双击按钮,系统会自动生成它的相关函数原型与声明,我们只需要完成函数体即可。

3.1运算符按键

        由上面的工作流程图可知,当我们按下操作符按键时,sort要变成相应运算法则的变量值,如按下+按键,sort就变成1,后续按下=按键时对sort的值switch一下就可以得出结果。

        其次,之前输入的数字存储在result中,我们按下运算符按键时,将之前输入过的变量值赋值给tempvalue,之后让编辑框中的变量值清零,最后让append=1,代表我们已经按下了符号按钮,后续输入的将会是一个新的数字。

加号按钮响应函数如下,其余运算符按钮同理

void CcalculatorDlg::OnBnClickedButtonplus()
{sort = 1;tempvalue = result;m_edit1 = 0;append = 1;
}
3.2数字按键

   由上面的工作流程图可知,当我们按下数字按键时,如果append=1,说明我们刚按下了符号按钮,这是一个新的数字,因此将result的值清零。如果append!=1,就将result*10+按下的数字按键对应的值,将新的result赋值给编辑框的变量m_edit1;将append变量置0,表示我们正在输入数字。

        数字1按钮响应函数如下,其余运算符按钮同理

void CcalculatorDlg::OnBnClickedButton9()
{if (append == 1)result = 0;result = result * 10 + 9;m_edit1 = result;append = 0;UpdateData(FALSE);
}
3.3关于UpdateData()函数

UpdateData(TRUE);//用于将屏幕上控件中的数据交换到变量中。

UpdateData(FALSE);//用于将数据在屏幕中对应控件中显示出来。

3.4清零按键

        由上面的工作流程图可知,当我们按下清零按键时,将所有数据赋值为它构造函数时的初值,响应函数如下:

void CcalculatorDlg::OnBnClickedButtonc()
{tempvalue = 0;result = 0;m_edit1 = 0.0;UpdateData(FALSE);
}
3.5等号按键

        由上面的工作流程图可知,当我们按下等号按键时,switch一下我们之前的sort值,对result和tempvalue进行相应的运算操作,响应函数如下:

void CcalculatorDlg::OnBnClickedButtonequal()
{switch (sort) {case 1:result += tempvalue;break;case 2:result = tempvalue - result;break;case 3:result *= tempvalue;break;case 4:result /= tempvalue;break;}m_edit1 = result;UpdateData(FALSE);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Agilent MSO9404A、Keysight MSO9404A示波器,4 GHz,4 通道,20 GSa/s

Agilent MSO9404A、Keysight MSO9404A、HP MSO9404A 示波器,4 GHz,4 通道,20 GSa/s Keysight MSO9404A 示波器配备 15 英寸 XGA 显示屏,封装深度仅为 9 英寸(23 厘米),重量仅为 26 磅&#xff…

AI地名故事:笔岗村

笔岗村,实际上是由笔村和宏岗村两个古老的村落合并而成的。南宋度宗元年,也就是公元1265年,笔村开始建立。随着时间的推移,到了宋代后期,宏岗村也相继建立。这两个村落各自承载着丰富的历史和文化,最终在历…

铁山靠之数学建模 - Matlab入门

Matlab基础 1. Matlab界面与基本操作1.1 matlab帮助系统1.2 matlab命令1.3 matlab功能符号1.4 matlab的数据类型1.5 函数计算1.6 matlab向量1.7 matlab多项式1.8 M文件1.9 函数文件1.10 matlab的程序结构1.11 echo、warning和error函数1.12 交互输入1.13 程序调试1.14 设置断点…

‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌绘唐3一键追爆款反推软件哪家好

‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌绘唐3一键追爆款反推软件哪家好 支持单镜精绘,可以根据故事情节进行单镜头绘图调整,并支持对SD各类模型的自定义调整。 支持一键完成图文视频合成&am…

Windows11“重置此电脑”后,Edge浏览器在微软应用商店显示“已安装”,但是开始菜单搜索不到的解决办法

Windows11“重置此电脑”后,Edge浏览器在微软应用商店显示“已安装”,但是开始菜单搜索不到的解决办法 为什么重新使用Edge?问题描述不该更新可用更新问过AI(通义千问),并且AI提供方法全都无效。现象 操作步…

国产分布式数据库高可用故障检测实现

在分布式数据库架构下,当数据库节点异常时,数据库管理组件能够自动感知到异常并触发节点隔离或者自动切换,是数据库高可用容灾的基本能力。在节点服务器异常、网络异常或进程异常等场景下,各数据库产品本身已经具备了可靠的检测能…

为什么说气膜是环保建筑呢—轻空间

气膜建筑,作为一种绿色环保建筑,其环保特性主要体现在以下几个方面: 1. 节约水资源: 气膜建筑在施工和运行过程中不需要大量水资源,与传统建筑相比,可以每年节约数万吨水资源。这种节约不仅有利于缓解水资源…

【学习AI-相关路程-工具使用-自我学习-Ubuntucudavisco-开发工具尝试-基础样例 (2)】

【学习AI-相关路程-工具使用-自我学习-cuda&visco-开发工具尝试-基础样例 (2)】 1、前言2、环境说明3、总结说明4、工具安装0、验证cuda1、软件下载2、插件安装 5、软件设置与编程练习1、创建目录2、编译软件进入目录&创建两个文件3、编写配置文…

【iOS开发】—— 初识锁

【iOS开发】—— 初识锁 线程安全锁的种类自旋锁定义原理自旋锁缺点OSSpinLock(自旋锁) 互斥锁os_unfair_lockpthread_mutexNSLockNSRecusiveLockSemaphore信号量synchronized 总结两种之间的区别和联系: 线程安全 当一个线程访问数据的时候…

Request请求数据 (** kwargs参数)

目录 🌟前言🍉request入门1. params2. data3. json4. headers5. cookies6. auth7. files8. timeout9. proxies10. allow_redirects11. stream12. verify13. cert 🌟总结 🌟前言 在Python中,发送网络请求是一项常见的任…

淘宝商品评论电商API接口,让你购物不再困扰

现在的时代购物已经成为了人们生活中不可或缺的一部分。然而,面对琳琅满目的商品,我们常常犯愁,不知道如何选择。为了解决这个问题,淘宝推出了商品评论电商API接口,为广大消费者提供了极大的便利。联讯数据将详细介绍淘…

数据挖掘实战-基于决策树算法构建银行贷款审批预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

6818Linux内核--Bootloader应用分析

Bootloader应用分析 一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 引导加载程序。包括固化在固件( firmware )中的 boot 代码(可选),和 Boot Loader 两大部分。 Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 文件系统…

一分钟把小程序音频保存到手机上

在这个快节奏的时代,每一分钟都显得格外珍贵。你是否曾在小程序中偶遇一段旋律,它如同清晨的露珠,晶莹剔透,却又转瞬即逝?是否曾在某个瞬间,渴望将那段旋律永久地镌刻在心间,让它成为你私人时光…

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

温情母亲节,李良济中医课堂,用爱呵护妈妈的健康与美丽

这个世界上,有这么一个人,你听过她最美的年华,她见证你最美的长大,这个人就是妈妈。 知恩于心,感恩于行!母亲节,李良济中医课堂助健康,滋养好物养身心,与您一起用爱守护…

2024最新单身经济新模式,低客单量高转换率,长期项目,新手快速上手

在今年,”搭子”这个词汇异常火爆,主要通过搭子流量进行线下推广以实现高品质群的盈利。有一句流行语说,年轻人可以不想谈恋爱,但不能没有搭子,这显示了搭子的需求量很大。 只要有需求,就会有创业的机会。…

第二证券今日投资参考:VA、VE景气上行 猪价步入慢涨趋势

上周五,沪指午后在地产、金融等板块的带动下震荡上升,创业板指等弱势下探。到收盘,沪指微涨0.01%报3154.55点,深证成指跌0.58%报9731.24点,创业板指跌1.15%报1878.17点,科创50指数跌1.5%;两市算…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象:之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库,一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题,具体如下图: 原因分析: 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代,智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台,实现办公室人员进出的智能统计。这不是简单的技术堆砌,而是一场关于AI与IoT融合的实战演示。🌟 提示:AIoT…