总体说明
****文章基于VS2022的MFC应用模块完成简易的计算器的的实现****
****源代码就是文章里面所有代码块的代码****
什么是MFC应用模块?
- MFC(Microsoft Foundation Classes)微软基础类库,是微软公司Microsoft Visual
C++开发工具中的一个框架,它旨在简化Windows应用程序的开发。MFC提供了许多类和函数来处理Windows的各种操作,如用户界面、窗口管理、消息处理、文件操作等。 - 在Visual Studio中,MFC模块是指一组MFC类和函数的集合,用于开发Windows桌面应用程序。MFC模块提供了一种基于类的编程模型,让开发者可以使用面向对象的方式来管理和处理Windows的各种功能和操作。
- 对于计算器实现来说,MFC可以给我们提供一个模板,含有:“画布”(计算器的图形界面)、“按钮”(计算器的组件单元)、“显示”(结果显示),和实现他们的函数、变量(VS项目里面的.cpp、.h文件)
MFC应用模块安装
参见此博文即可:
*//此为转载,非本人原创*
https://blog.youkuaiyun.com/kaszxc/article/details/125788196
基于MFC应用模块程序设计
1. 创建项目
- 通过文件->新建->项目建立MFC应用程序,在应用程序类型选择基于对话框,点击右下角的“完成”即可创建项目。
- 如果找不到MFC就先安装MFC模块组件
2. 界面设计
- 如果创建成功,会出现下面的界面,箭头指向的矩形框就是计算器的图形界面
- 下面我们要通过界面设计在图形界面添加单元
- 图形界面窗口打开方式:在资源视图的Dialog文件夹中可以看到,如果找不到资源视图可以到视图->其他窗口->资源视图中打开,点击红箭头显示的地方也可以
- 下图是Windows自带的计算器,这篇文章只讲怎么做可以做加减乘除四则运算的简单计算器 所以我们要在界面设计上只需要参考windows的按钮(Button)如数字1、2、3…和运算符(Operator·)+、-、*、、÷…以及结果显示…
- 数字和运算符分别对应于(Button),结果显示对应于(Edit Control)
- List item Edit Control是数据交互的控件,可以进行数据的输入与输出,Button是一个事件发生器,可以设置单击或双击等情况下需要处理的函数。
接下来需要给各个Button添加事件,一般情况下双击按键就能完成创建,或者右键属性栏上方的闪电符号(控件事件)进行添加。
如果添加错了控件事件需要删除,需要同时将“项目名Dlg.cpp”中对应的事件函数,BEGIN_MESSAGE_MAP中相应的事件以及“项目名Dlg.h”中对应的事件函数三个字段均删除。1
- 最终界面设计如下图所示
3.代码改写
3.1 等式建立
- 上图的第一行的四个(Edit Control)前三个表示数字、运算符、数字第四个表示计算结果
因此写一个方法:一个四则运算的函数,实现前面三个(Edit Control)的编写,并将结果显示在第四个(Edit Control)里面 - 这里就体现MFC模块的作用了,它已经为我们搭建了一个模板。首先双击等号按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码:
// TODO: 在此添加控件通知处理程序代码
GetDlgItemText(IDC_EDIT1, str1); //将第一编辑框的内容读取到str1(IDC与设计界面的ID匹配)
GetDlgItemText(IDC_EDIT2, str2);
GetDlgItemText(IDC_EDIT3, str3);
number1 = _ttof(str1); //将Cstring格式转化为浮点型数字(unicode编码格式)
number2 = _ttof(str3);
if (str2 != _T("")) //判断第二读取框的内容是否为空
{
if (str2 == _T("+")) //如果非空做出相应的数据处理
{
result = number1 + number2;
}
else if (str2 == _T("-"))
{
result = number1 - number2;
}
else if (str2 == _T("*"))
{
result = number1 * number2;
}
else if (str2 == _T("/"))
{
result = number1 / number2;
}
else
{
MessageBox(_T("运算符输入有误!")); //如果不是+-*/则显示输出错误
}
}
str.Format(_T("%g"), result); //实现数字等到CString的转换
SetDlgItemText(IDC_EDIT4, str); //将结果显示到第四编辑框中
- 相应的在头文件的class 项目名Dlg中添加以下字段
- 结果验证: 如果想看自己的操作,到此为止是否正确,单击F5运行程序,在前三个编辑框依次输入数字(如“1.2”),运算符(+ - * /),数字(如“2.3”),单击等号在最后一个编辑框就可以得到答案。
3.2 按键输入
- 现在是倒数第二步,就是怎么将按键的结果变成数值,并且赋值给对应的(Eidtor Control)
- 首先完成数字按键输入工作
因为数字及小数点应该在第一个编辑框以及第三个编辑框都能生效,这里我们通过运算符(第二编辑框)是否输入进行判断,未输入则按键输入对第一对话框生效,已输入对第三对话框生效。
因为多个数字都要进行这样的输入,为简化代码,我们设置一个输入函数用于统一的数字输入,在“项目名Dlg.cpp”代码中添加代码如下:
/*定义数字输入函数*/
void CMFCApplication1Dlg::input(char *a) //这里的CMFCApplication1Dlg需改为“你的项目名Dlg”
{
GetDlgItemText(IDC_EDIT2, str2); //判断第二编辑框是否为空
if (str2 == _T("")) //是的话对第一编辑框进行操作
{
str1 += LPCTSTR(a); //对字符串进行扩展
number1 = _ttof(str1); //将字符串转为数字
SetDlgItemText(IDC_EDIT1, str1); //更新第一编辑框
}
else //否则对第三编辑框进行操作
{
str3 += LPCTSTR(a);
number2 = _ttof(str3);
SetDlgItemText(IDC_EDIT3, str3);
}
}
- 头文件字段添加
- 双击数字及小数点按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码(以数字0为例,其他类似):
// TODO: 在此添加控件通知处理程序代码
input("0"); //输入数字0
- 接下来完成运算符按键输入工作
双击运算符按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码(以运算符+为例,其他类似)
// TODO: 在此添加控件通知处理程序代码
str2 = _T("+"); //将第二编辑框的内容设置为+并显示
SetDlgItemText(IDC_EDIT2, str2);
3.3 清零功能
- ***实现计算器的清零功能,为了用于下一次的计算,同时也是最后一步 ***
- 双击清零(C)按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码:
// TODO: 在此添加控件通知处理程序代码
str1 = _T(""); //将四个编辑框的内容都设置为空并显示
str2 = _T("");
str3 = _T("");
str = _T("");
SetDlgItemText(IDC_EDIT1, str1);
SetDlgItemText(IDC_EDIT2, str2);
SetDlgItemText(IDC_EDIT3, str3);
SetDlgItemText(IDC_EDIT4, str);
3.4 功能展示
- Ctrl+F5执行后,可以在项目文件夹内找到.exe文件
-可以通过下载我上传的.exe文件看具体的功能
【声明】:文章大部分搬运自下面的博文
https://blog.youkuaiyun.com/qq_37381642/article/details/104066347 ↩︎