基于mfc的简易计算器
时间: 2023-09-15 21:18:11 浏览: 122
基于MFC的简易计算器
4星 · 用户满意度95%
以下是一个基于 MFC 的简易计算器的代码示例:
首先,创建一个 MFC 应用程序项目,并在资源视图中添加一个对话框。
在对话框上添加一些控件,如 Edit 控件和 Button 控件,用于显示和输入数字和运算符。
在对话框类的头文件中添加以下代码:
```cpp
class CCalculatorDlg : public CDialogEx
{
// ...
private:
CString m_strInput; // 用于保存用户输入的字符串
double m_dNum1; // 用于保存第一个数字
double m_dNum2; // 用于保存第二个数字
char m_chOperator; // 用于保存运算符
void Calculate(); // 计算结果的函数
public:
CCalculatorDlg(CWnd* pParent = nullptr); // 标准构造函数
// ...
};
```
在对话框类的源文件中添加以下代码:
```cpp
CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_CALCULATOR_DIALOG, pParent)
{
// ...
}
void CCalculatorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_INPUT, m_strInput);
}
BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_0, &CCalculatorDlg::OnBnClickedButton0)
ON_BN_CLICKED(IDC_BUTTON_1, &CCalculatorDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON_2, &CCalculatorDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON_3, &CCalculatorDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON_4, &CCalculatorDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON_5, &CCalculatorDlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON_6, &CCalculatorDlg::OnBnClickedButton6)
ON_BN_CLICKED(IDC_BUTTON_7, &CCalculatorDlg::OnBnClickedButton7)
ON_BN_CLICKED(IDC_BUTTON_8, &CCalculatorDlg::OnBnClickedButton8)
ON_BN_CLICKED(IDC_BUTTON_9, &CCalculatorDlg::OnBnClickedButton9)
ON_BN_CLICKED(IDC_BUTTON_ADD, &CCalculatorDlg::OnBnClickedButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_SUBTRACT, &CCalculatorDlg::OnBnClickedButtonSubtract)
ON_BN_CLICKED(IDC_BUTTON_MULTIPLY, &CCalculatorDlg::OnBnClickedButtonMultiply)
ON_BN_CLICKED(IDC_BUTTON_DIVIDE, &CCalculatorDlg::OnBnClickedButtonDivide)
ON_BN_CLICKED(IDC_BUTTON_EQUAL, &CCalculatorDlg::OnBnClickedButtonEqual)
END_MESSAGE_MAP()
void CCalculatorDlg::OnBnClickedButton0()
{
m_strInput += '0';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton1()
{
m_strInput += '1';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton2()
{
m_strInput += '2';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton3()
{
m_strInput += '3';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton4()
{
m_strInput += '4';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton5()
{
m_strInput += '5';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton6()
{
m_strInput += '6';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton7()
{
m_strInput += '7';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton8()
{
m_strInput += '8';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButton9()
{
m_strInput += '9';
UpdateData(FALSE);
}
void CCalculatorDlg::OnBnClickedButtonAdd()
{
m_dNum1 = _ttof(m_strInput);
m_strInput.Empty();
m_chOperator = '+';
}
void CCalculatorDlg::OnBnClickedButtonSubtract()
{
m_dNum1 = _ttof(m_strInput);
m_strInput.Empty();
m_chOperator = '-';
}
void CCalculatorDlg::OnBnClickedButtonMultiply()
{
m_dNum1 = _ttof(m_strInput);
m_strInput.Empty();
m_chOperator = '*';
}
void CCalculatorDlg::OnBnClickedButtonDivide()
{
m_dNum1 = _ttof(m_strInput);
m_strInput.Empty();
m_chOperator = '/';
}
void CCalculatorDlg::OnBnClickedButtonEqual()
{
m_dNum2 = _ttof(m_strInput);
Calculate();
m_strInput.Empty();
}
void CCalculatorDlg::Calculate()
{
double dResult = 0.0;
switch (m_chOperator)
{
case '+':
dResult = m_dNum1 + m_dNum2;
break;
case '-':
dResult = m_dNum1 - m_dNum2;
break;
case '*':
dResult = m_dNum1 * m_dNum2;
break;
case '/':
dResult = m_dNum1 / m_dNum2;
break;
default:
break;
}
m_strInput.Format(_T("%.2f"), dResult);
UpdateData(FALSE);
}
```
在资源文件中,将按钮的控件 ID 设置为上面代码中的相应 ID,例如 IDC_BUTTON_0、IDC_BUTTON_1 等。
最后,在对话框类的 OnInitDialog() 函数中添加以下代码:
```cpp
BOOL CCalculatorDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置对话框的标题
SetWindowText(_T("Calculator"));
// 设置 Edit 控件的字体
CFont *pFont = new CFont();
pFont->CreateFont(24, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS, _T("Arial"));
GetDlgItem(IDC_EDIT_INPUT)->SetFont(pFont);
// 将焦点设置到 Edit 控件上
GetDlgItem(IDC_EDIT_INPUT)->SetFocus();
return FALSE;
}
```
现在,运行程序,就可以在对话框上输入数字和运算符,计算出结果了。
阅读全文