一个简单的计算器

//一个简单计算器



#include <WINDOWS.H>
#include "resource.h"
int g_numA = 0;
int g_numB = 0;
int g_opFlag = 0; //运算过的标志 
char g_operator = '\0';

INT_PTR CALLBACK DialogProc(
							HWND hwndDlg,  // handle to dialog box
							UINT uMsg,     // message
							WPARAM wParam, // first message parameter
							LPARAM lParam  // second message parameter
							)
{
	char num[16];
	char edit[64];
	char org_num[64];
	char op_temp[8];
	int result = 0;  //运算结果
	switch(uMsg)
	{
	case WM_COMMAND:
		if (wParam >= 1002 && wParam <= 1011) //获取数字
		{
			if (g_opFlag != 0) //如果已经运算过则清空编辑器
			{
				SetDlgItemText(hwndDlg, IDC_EDIT_A, "");
				g_opFlag = 0;
			}
			GetDlgItemText(hwndDlg, wParam, num, sizeof(num));
			GetDlgItemText(hwndDlg, IDC_EDIT_A, edit, sizeof(edit));
			sprintf(edit,"%s%s",edit,num);
			SetDlgItemText(hwndDlg, IDC_EDIT_A, edit);
		}
		if (wParam >= 1012 && wParam <= 1015) //获取运算符
		{
			//保存第一个输入的数字
			GetDlgItemText(hwndDlg, IDC_EDIT_A, org_num, sizeof(org_num));
			g_numA = atoi(org_num);

			//获取运算符,并保存运算符
			GetDlgItemText(hwndDlg, wParam, op_temp, sizeof(op_temp));
			g_operator = op_temp[0];

			//清空编辑器
			SetDlgItemText(hwndDlg, IDC_EDIT_A, "");
		}
		switch(wParam)
		{
		case IDOK:
			//获取第2个输入的数字
			GetDlgItemText(hwndDlg, IDC_EDIT_A, org_num, sizeof(org_num));
			g_numB = atoi(org_num);

			switch(g_operator) //运算
			{
			case '+':
				result = g_numA + g_numB;
				break;
			case '-':
				result = g_numA - g_numB;
				break;
			case '*':
				result = g_numA * g_numB;
				break;
			case '/':
				result = g_numA / g_numB;
				break;
			default:
				break;
			}

			//显示运算结果
			sprintf(edit, "%d", result);
			SetDlgItemText(hwndDlg, IDC_EDIT_A, edit);
			//置运算标志为true
			g_opFlag = 1;
			break;
		case IDCANCEL:
			MessageBox(hwndDlg,TEXT("取消按钮已按下"),TEXT("标题"),MB_OK);
			break;
		default:
			break;
		}
		break;
	case WM_CLOSE:
		DestroyWindow(hwndDlg);
		break;
	}
	return 0;

}

int WINAPI WinMain( HINSTANCE hInstance,
				   HINSTANCE hPrevInstance,
				   LPSTR lpCmdLine,
				   int nShowCmd )
{
	DialogBox(hInstance,
		MAKEINTRESOURCE(IDD_MAIN),
		NULL,
		DialogProc);
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值