软件实习实验一计算器开发(第三天)

(三)实验日志12.3

物联网一班-李林青-182210713120
源代码在Github:https://github.com/llq-007/-MFC-


目录

  • 目标

  • 功能实现

  • 作品展示

  • 总结


一、目标

(1) 将第一天写的计算器功能实现代码运用到MFC上;
(2)能够在MFC上实现计算器的相关功能。


二、功能实现

(1)按下按键能在文本框中输出

代码实现 例:按下一键输出一
其中要新建一个文本框变量m_Edit1和全局CString变量g_str。

void CCalculatorDlg::OnBnClickedButton14()//输出1
{
	g_str += "1";
	m_Edit1.SetWindowText(g_str);
	// TODO: 在此添加控件通知处理程序代码
}

(2)按下“=”键的结果输出

void CCalculatorDlg::OnBnClickedButton21()//按下=的结果输出
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	g_str = "";
	m_Edit1.SetWindowText(g_str);
	m_Edit2.SetWindowText(cs); 
	std::string sz2 = CT2A(cs.GetBuffer());
	double res = stackC(sz2);
	if (res == -1.123)
	{
		CString a ;
		a = "格式错误!!!";
		m_Edit1.SetWindowText(a);
	}
	else 
	{
		CString str;
		str.Format(TEXT("%0.1f"), res,res);
		g_str = str;
		m_Edit1.SetWindowText(g_str);
	}
}

(3)Delete删除键的设置

首先判断文本框中是否有字符,当有字符时令文本框中字符的最右边减一位。

void CCalculatorDlg::OnBnClickedButton4()//Delete键
{
	int nLength = g_str.GetLength();
	if (nLength > 0)
		g_str = g_str.Left(nLength - 1);
	else g_str = "0";
	m_Edit1.SetWindowText(g_str);
}

(4)Clear清屏键的设置

直接令全局变量g_str为空,在将其输出到文本框中。

void CCalculatorDlg::OnBnClickedButton1()//Clear清屏键
{
	g_str = "";
	m_Edit1.SetWindowText(g_str);
}

(4)菜单的设置

在文件夹中右键点击添加资源。
在这里插入图片描述
选择Menu添加菜单。
在这里插入图片描述
然后对菜单进行编辑即可。
在这里插入图片描述

(5)返回上一步功能设置

在菜单的返回上一步上点击右键,选择添加事件处理程序。


具体代码如下:

void CCalculatorDlg::On32771()//返回上一步
{
	CString cs;
	GetDlgItemText(IDC_EDIT2, cs);
	if(cs=="")
		MessageBox(_T("没有上一步"));
	g_str = "";
	m_Edit1.SetWindowText(cs);
}

这里我又建立了一个文本框用来存放上一次的数据,当点击返回时就将上一次的数据读取出来显示在用户看的文本框中,当然第二个文本框要隐藏。


三、作品展示

(1)计算并返回上一步

在这里插入图片描述

(2)Delete删除上一步

在这里插入图片描述

(3)在菜单中点击快捷键运算

在这里插入图片描述


四、总结

虽然在实验的过程中遇到了很多困难,例如CString和string的转换之类的,但在实验的过程中我还是学到了很多知识,也明白了学习的快乐之处。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页