基于MFC的计算器C++程序.docx
- 文档编号:7180407
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:21
- 大小:17.61KB
基于MFC的计算器C++程序.docx
《基于MFC的计算器C++程序.docx》由会员分享,可在线阅读,更多相关《基于MFC的计算器C++程序.docx(21页珍藏版)》请在冰豆网上搜索。
基于MFC的计算器C++程序
我自己编写的一个计算器程序,能够实现连续加减乘除运算,界面美观,学习简单,希望能帮到大家。
工程名为Firsttry,基于对话框设计
以下为对话框FirsttryDlg.h和FirsttryDlg.cpp
//FirsttryDlg.h:
头文件
//
#pragmaonce
//CFirsttryDlg对话框
classCFirsttryDlg:
publicCDialogEx
{
//构造
public:
CFirsttryDlg(CWnd*pParent=NULL);//标准构造函数
//对话框数据
enum{IDD=IDD_FIRSTTRY_DIALOG};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持
//实现
protected:
HICONm_hIcon;
//生成的消息映射函数
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msgvoidOnBnClickedSub();
afx_msgvoidOnCalcDeci();
afx_msgvoidOnCalcHex();
afx_msgvoidOnBnClickedNumber1();
afx_msgvoidOnBnClickedNumber2();
afx_msgvoidOnBnClickedNumber3();
afx_msgvoidOnBnClickedNumber4();
afx_msgvoidOnBnClickedNumber5();
afx_msgvoidOnBnClickedNumber6();
afx_msgvoidOnBnClickedNumber7();
afx_msgvoidOnBnClickedNumber8();
afx_msgvoidOnBnClickedNumber9();
afx_msgvoidOnBnClickedNumber0();
afx_msgvoidOnBnClickedNumbera();
afx_msgvoidOnBnClickedNumberb();
afx_msgvoidOnBnClickedNumberc();
afx_msgvoidOnBnClickedNumberd();
afx_msgvoidOnBnClickedNumbere();
afx_msgvoidOnBnClickedNumberf();
afx_msgvoidOnBnClickedAdd();
afx_msgvoidOnBnClickedMul();
afx_msgvoidOnBnClickedDiv();
afx_msgvoidOnBnClickedEqual();
afx_msgvoidOnBnClickedBackspace();
afx_msgvoidOnBnClickedClear();
};
//FirsttryDlg.cpp:
实现文件
//
#include"stdafx.h"
#include"Firsttry.h"
#include"FirsttryDlg.h"
#include"afxdialogex.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
CStringm_strNum1;
CStringm_strNum2;
CStringm_strOperation;
intm_iCalcMode;
//用于应用程序“关于”菜单项的CAboutDlg对话框
classCAboutDlg:
publicCDialogEx
{
public:
CAboutDlg();
//对话框数据
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持
//实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialogEx(CAboutDlg:
:
IDD)
{
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialogEx:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialogEx)
END_MESSAGE_MAP()
//CFirsttryDlg对话框
CFirsttryDlg:
:
CFirsttryDlg(CWnd*pParent/*=NULL*/)
:
CDialogEx(CFirsttryDlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCFirsttryDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialogEx:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CFirsttryDlg,CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_SUB,&CFirsttryDlg:
:
OnBnClickedSub)
ON_COMMAND(ID_CALC_DECI,&CFirsttryDlg:
:
OnCalcDeci)
ON_COMMAND(ID_CALC_HEX,&CFirsttryDlg:
:
OnCalcHex)
ON_BN_CLICKED(IDC_NUMBER1,&CFirsttryDlg:
:
OnBnClickedNumber1)
ON_BN_CLICKED(IDC_NUMBER2,&CFirsttryDlg:
:
OnBnClickedNumber2)
ON_BN_CLICKED(IDC_NUMBER3,&CFirsttryDlg:
:
OnBnClickedNumber3)
ON_BN_CLICKED(IDC_NUMBER4,&CFirsttryDlg:
:
OnBnClickedNumber4)
ON_BN_CLICKED(IDC_NUMBER5,&CFirsttryDlg:
:
OnBnClickedNumber5)
ON_BN_CLICKED(IDC_NUMBER6,&CFirsttryDlg:
:
OnBnClickedNumber6)
ON_BN_CLICKED(IDC_NUMBER7,&CFirsttryDlg:
:
OnBnClickedNumber7)
ON_BN_CLICKED(IDC_NUMBER8,&CFirsttryDlg:
:
OnBnClickedNumber8)
ON_BN_CLICKED(IDC_NUMBER9,&CFirsttryDlg:
:
OnBnClickedNumber9)
ON_BN_CLICKED(IDC_NUMBER0,&CFirsttryDlg:
:
OnBnClickedNumber0)
ON_BN_CLICKED(IDC_NUMBERA,&CFirsttryDlg:
:
OnBnClickedNumbera)
ON_BN_CLICKED(IDC_NUMBERB,&CFirsttryDlg:
:
OnBnClickedNumberb)
ON_BN_CLICKED(IDC_NUMBERC,&CFirsttryDlg:
:
OnBnClickedNumberc)
ON_BN_CLICKED(IDC_NUMBERD,&CFirsttryDlg:
:
OnBnClickedNumberd)
ON_BN_CLICKED(IDC_NUMBERE,&CFirsttryDlg:
:
OnBnClickedNumbere)
ON_BN_CLICKED(IDC_NUMBERF,&CFirsttryDlg:
:
OnBnClickedNumberf)
ON_BN_CLICKED(IDC_ADD,&CFirsttryDlg:
:
OnBnClickedAdd)
ON_BN_CLICKED(IDC_MUL,&CFirsttryDlg:
:
OnBnClickedMul)
ON_BN_CLICKED(IDC_DIV,&CFirsttryDlg:
:
OnBnClickedDiv)
ON_BN_CLICKED(IDC_EQUAL,&CFirsttryDlg:
:
OnBnClickedEqual)
ON_BN_CLICKED(IDC_BACKSPACE,&CFirsttryDlg:
:
OnBnClickedBackspace)
ON_BN_CLICKED(IDC_CLEAR,&CFirsttryDlg:
:
OnBnClickedClear)
END_MESSAGE_MAP()
//CFirsttryDlg消息处理程序
BOOLCFirsttryDlg:
:
OnInitDialog()
{
CDialogEx:
:
OnInitDialog();
//将“关于...”菜单项添加到系统菜单中。
//IDM_ABOUTBOX必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
BOOLbNameValid;
CStringstrAboutMenu;
bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon,TRUE);//设置大图标
SetIcon(m_hIcon,FALSE);//设置小图标
//TODO:
在此添加额外的初始化代码
CMenu*pMenu=newCMenu;
pMenu->LoadMenu(IDR_CALCMODE);
SetMenu(pMenu);
pMenu->CheckMenuRadioItem(ID_CALC_DECI,ID_CALC_HEX,ID_CALC_DECI,MF_CHECKED);
m_iCalcMode=0;
m_strNum1.Empty();
m_strNum2.Empty();
m_strOperation.Empty();
GetDlgItem(IDC_NUMBERA)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERB)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERC)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERD)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERE)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERF)->EnableWindow(FALSE);
returnTRUE;//除非将焦点设置到控件,否则返回TRUE
}
voidCFirsttryDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx:
:
OnSysCommand(nID,lParam);
}
}
//如果向对话框添加最小化按钮,则需要下面的代码
//来绘制该图标。
对于使用文档/视图模型的MFC应用程序,
//这将由框架自动完成。
voidCFirsttryDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND,reinterpret_cast
//使图标在工作区矩形中居中
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//绘制图标
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialogEx:
:
OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSORCFirsttryDlg:
:
OnQueryDragIcon()
{
returnstatic_cast
}
voidCFirsttryDlg:
:
OnCalcDeci()
{
//TODO:
在此添加命令处理程序代码
CMenu*pMenu=GetMenu();
pMenu->CheckMenuRadioItem(ID_CALC_DECI,ID_CALC_HEX,ID_CALC_DECI,MF_CHECKED);
m_iCalcMode=0;
m_strNum1.Empty();
m_strNum2.Empty();
m_strOperation.Empty();
GetDlgItem(IDC_NUMBERA)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERB)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERC)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERD)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERE)->EnableWindow(FALSE);
GetDlgItem(IDC_NUMBERF)->EnableWindow(FALSE);
}
voidCFirsttryDlg:
:
OnCalcHex()
{
//TODO:
在此添加命令处理程序代码
CMenu*pMenu=GetMenu();
pMenu->CheckMenuRadioItem(ID_CALC_DECI,ID_CALC_HEX,ID_CALC_HEX,MF_CHECKED);
m_iCalcMode=1;
m_strNum1.Empty();
m_strNum2.Empty();
m_strOperation.Empty();
GetDlgItem(IDC_NUMBERA)->EnableWindow(TRUE);
GetDlgItem(IDC_NUMBERB)->EnableWindow(TRUE);
GetDlgItem(IDC_NUMBERC)->EnableWindow(TRUE);
GetDlgItem(IDC_NUMBERD)->EnableWindow(TRUE);
GetDlgItem(IDC_NUMBERE)->EnableWindow(TRUE);
GetDlgItem(IDC_NUMBERF)->EnableWindow(TRUE);
}
voidCFirsttryDlg:
:
OnBnClickedNumber1()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="1";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber2()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="2";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber3()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="3";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber4()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="4";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber5()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="5";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber6()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="6";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber7()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="7";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber8()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="8";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber9()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="9";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumber0()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="0";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumbera()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="A";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumberb()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="B";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumberc()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="C";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumberd()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="D";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumbere()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="E";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedNumberf()
{
//TODO:
在此添加控件通知处理程序代码
m_strNum1+="F";
GetDlgItem(IDC_RESULT)->SetWindowText(m_strNum1);
}
voidCFirsttryDlg:
:
OnBnClickedAdd()
{
//TODO:
在此添加控件通知处理程序代码
if(m_iCalcMode==0)
{
if(m_strOperation.IsEmpty())
{
m_strOperation="+";
m_strNum2=m_strNum1;
}
else
{
longres;
if(m_strOperation=="+")
res=a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MFC 计算器 C+ 程序