简易计算器代码部分的实现
在已创建好的MFC解决方案里打开头文件下的…Dlg.h文件(以下简称.h文件)、源文件下的…Dlg.cpp文件(以下简称.cpp文件)和资源文件下.rc文件里的Dialog\IDD_XXX_DIALOG文件(以下简称DIALOG文件)。
Static Text(静态文本框)
添加静态文本框,单机鼠标右键即可更改属性:
Edit Control(编辑框)的实现
在DIALOG文件中插入Edit Control,双击进入.cpp文件中的函数部分。进入.h文件中,声明变量字符串变量str(有几个编辑框声明几个),声明两个double类型变量num1和num2,以及字符串变量TempStr(用于存放中间值)。
private:
CString str;
CString str1;
CString str2;
CString str3;
CString str4;
double num1;
double num2;
CString TempStr;
myCalculator_Flag flag; //定义运算符对应的变量
在.cpp文件中添加以下代码,使.h中设置的字符串变量与文本框相关联。
void CmyCalculatorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, str);
DDX_Text(pDX, IDC_EDIT2, str1);
DDX_Text(pDX, IDC_EDIT3, str2);
DDX_Text(pDX, IDC_EDIT4, str3);
DDX_Text(pDX, IDC_EDIT5, str4);
}
最好每插入一个编辑框就双击编辑框一次,这样做保险一点。
Button(按键)
Back:实现撤销最后一个数字
void CmyCalculatorDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE); //获取所有文本框内的字符串
if (!str.IsEmpty()) {
str=str.Left(str.GetLength()-1); //字符串长度减1
}
UpdateData(FALSE); //将字符串内容更新到文本框
}
Clear:清除当前输入编辑框中的全部内容。
void CmyCalculatorDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
str = L""; //把字符串置空
num1 = 0.0f;
num2 = 0.0f;
UpdateData(FALSE);
}
Clear All:清楚包括历史记录编辑框在内的所有编辑框中的内容。
void CmyCalculatorDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
str = L"";
str1 = L"";
str2 = L"";
str3 = L"";
str4 = L"";
num1 = 0.0f;
num2 = 0.0f;
UpdateData(FALSE);
}
数字部分:(其余类似)
void CmyCalculatorDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
str += L"7";
UpdateData(FALSE);
}
小数点部分:此处要加一个判断,以防止同时存在两个小数点。
void CmyCalculatorDlg::OnBnClickedButton13()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
//如果不存在小数点,则添加一个小数点
if (-1 == str.Find(L'.')) {
str += L".";
}
UpdateData(FALSE);
}
在.h文件中声明两个共有函数: