MFC实现九宫格简易计算器
今天没事就做了一个简单的计算器,大家可以看一下,我是用vs2019做的,其他版本应该也大同小异
先选择MFC应用
项目名称我写Calc
应用程序类型选择基于对话框,取消"关于",其他默认
在"解决方案资源管理器"里找到 资源文件/Calc.rc 文件,双击进入,找到Dialog,找到IDD开头的文件双击编辑,界面做成下图的样子
将按钮0~9的ID分别命名为:
IDC_BUTTON0
IDC_BUTTON1
IDC_BUTTON2
IDC_BUTTON3
IDC_BUTTON4
IDC_BUTTON5
IDC_BUTTON6
IDC_BUTTON7
IDC_BUTTON8
IDC_BUTTON9
"."命名为: IDC_BUTTONDot
"+"命名为: IDC_BUTTONAdd
"-"命名为: IDC_BUTTONSub
"×"命名为: IDC_BUTTONMult
"÷"命名为: IDC_BUTTONDiv
"="命名为: IDC_BUTTONEqual
"C"命名为: IDC_BUTTONClear
如下图所示命名
点击"示例编辑框",右键,选择类向导,点击成员变量
点击右边的"添加自定义",变量类型为double,名称为m_display
点击"确定"
打开 CalcDlg.cpp
添加以下变量
int count; //计数
BOOL dot_flg; //小数点标志
BOOL continue_flg;//没按运算符,是否一直连续按数字按钮标志
BOOL str_flag;//有没按运算符标志
BOOL downDot;//小数点
CString str;//记录当前按的运算符
double result; //num1和num2运算的结果
double num1;
double num2; //按运算符之前的第一个数
double CCalcDlg::buttonDownNum(int numSize)
{
if (!str_flag) //运算符没有被按下,那就是num1
{
if (!continue_flg) //按下一次
{
num1 = numSize;
continue_flg = TRUE;
}
else
{
num1 = num1 * pow(10, count) + numSize;
if (downDot)
{
num1 = num1 / (pow(10, count));
count++;
}
}
return num1;
}
else //有运算符被按下
{
if (!continue_flg) //是否连续按下
{
num2 = numSize;
continue_flg = TRUE;
}
else
{
num2 = num2 * pow(10, count) + numSize;