代码生成VC简单计算器
时间: 2023-10-10 15:11:35 浏览: 55
以下是用VC++实现简单计算器的代码:
```c++
#include "stdafx.h"
#include "resource.h"
#define MAX_COUNT 128
double result;
double num1, num2;
char op;
BOOL CALLBACK Dlg_Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char str[MAX_COUNT];
switch(uMsg)
{
case WM_INITDIALOG:
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
SetDlgItemText(hwndDlg, IDC_EDIT2, "");
SetDlgItemText(hwndDlg, IDC_EDIT3, "");
break;
case WM_COMMAND:
switch(wParam)
{
case IDC_BUTTON1: // 数字1
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "1");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON2: // 数字2
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "2");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON3: // 数字3
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "3");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON4: // 数字4
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "4");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON5: // 数字5
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "5");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON6: // 数字6
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "6");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON7: // 数字7
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "7");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON8: // 数字8
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "8");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON9: // 数字9
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "9");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON0: // 数字0
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
strcat(str, "0");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON_POINT: // 小数点
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
if (strchr(str, '.') == NULL)
strcat(str, ".");
SetDlgItemText(hwndDlg, IDC_EDIT1, str);
break;
case IDC_BUTTON_ADD: // 加号
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
num1 = atof(str);
op = '+';
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
break;
case IDC_BUTTON_SUB: // 减号
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
num1 = atof(str);
op = '-';
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
break;
case IDC_BUTTON_MUL: // 乘号
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
num1 = atof(str);
op = '*';
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
break;
case IDC_BUTTON_DIV: // 除号
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
num1 = atof(str);
op = '/';
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
break;
case IDC_BUTTON_EQUAL: // 等号
GetDlgItemText(hwndDlg, IDC_EDIT1, str, MAX_COUNT);
num2 = atof(str);
switch(op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == 0)
{
MessageBox(hwndDlg, "除数不能为0!", "错误", MB_OK | MB_ICONERROR);
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
return TRUE;
}
else
result = num1 / num2;
break;
}
sprintf(str, "%.2f", result);
SetDlgItemText(hwndDlg, IDC_EDIT3, str);
break;
case IDC_BUTTON_CLEAR: // 清除
SetDlgItemText(hwndDlg, IDC_EDIT1, "");
SetDlgItemText(hwndDlg, IDC_EDIT3, "");
break;
case IDCANCEL: // 取消
EndDialog(hwndDlg, wParam);
return TRUE;
}
break;
}
return FALSE;
}
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, Dlg_Proc);
return 0;
}
```
这个程序基于对话框,包含一个编辑框和一些按钮,按下按钮之后,将数字或运算符添加到编辑框中。当用户点击“等于”按钮时,程序将计算出结果并将其显示在另一个编辑框中。