VC++ 计算器.docx

上传人:b****7 文档编号:10781534 上传时间:2023-02-22 格式:DOCX 页数:20 大小:144KB
下载 相关 举报
VC++ 计算器.docx_第1页
第1页 / 共20页
VC++ 计算器.docx_第2页
第2页 / 共20页
VC++ 计算器.docx_第3页
第3页 / 共20页
VC++ 计算器.docx_第4页
第4页 / 共20页
VC++ 计算器.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

VC++ 计算器.docx

《VC++ 计算器.docx》由会员分享,可在线阅读,更多相关《VC++ 计算器.docx(20页珍藏版)》请在冰豆网上搜索。

VC++ 计算器.docx

VC++计算器

//CalculatorDlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"Calculator.h"

#include"CalculatorDlg.h"

#include"math.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

//CAboutDlgdialogusedforAppAbout

Display*Pdisplay;

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);   //DDX/DDVsupport

//Implementation

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

//CCalculatorDlgdialog

CCalculatorDlg:

:

CCalculatorDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CCalculatorDlg:

:

IDD,pParent)

Cal_display(_T("WELCOME"))

{

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

Pdisplay=newDisplay(this);  

}

voidCCalculatorDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,Cal_display);

}

BEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

//ON_WM_KEYDOWN()

ON_BN_CLICKED(IDOK,&CCalculatorDlg:

:

OnBnClickedOk)

ON_BN_CLICKED(IDCANCEL,&CCalculatorDlg:

:

OnBnClickedCancel)

ON_BN_CLICKED(IDCANCEL2,&CCalculatorDlg:

:

OnBnClickedCancel2)

ON_BN_CLICKED(IDOK4,&CCalculatorDlg:

:

OnBnClickedOk4)

ON_BN_CLICKED(IDOK6,&CCalculatorDlg:

:

OnBnClickedOk6)

ON_BN_CLICKED(IDOK2,&CCalculatorDlg:

:

OnBnClickedOk2)

ON_BN_CLICKED(IDCANCEL3,&CCalculatorDlg:

:

OnBnClickedCancel3)

ON_BN_CLICKED(IDOK3,&CCalculatorDlg:

:

OnBnClickedOk3)

ON_BN_CLICKED(IDCANCEL4,&CCalculatorDlg:

:

OnBnClickedCancel4)

ON_BN_CLICKED(IDCANCEL6,&CCalculatorDlg:

:

OnBnClickedCancel6)

ON_BN_CLICKED(IDCANCEL5,&CCalculatorDlg:

:

OnBnClickedCancel5)

ON_BN_CLICKED(IDCANCEL8,&CCalculatorDlg:

:

OnBnClickedCancel8)

ON_BN_CLICKED(IDCANCEL9,&CCalculatorDlg:

:

OnBnClickedCancel9)

ON_BN_CLICKED(IDCANCEL7,&CCalculatorDlg:

:

OnBnClickedCancel7)

ON_BN_CLICKED(IDOK5,&CCalculatorDlg:

:

OnBnClickedOk5)

ON_BN_CLICKED(IDOK7,&CCalculatorDlg:

:

OnBnClickedOk7)

ON_BN_CLICKED(IDCANCEL10,&CCalculatorDlg:

:

OnBnClickedCancel10)

ON_BN_CLICKED(IDOK8,&CCalculatorDlg:

:

OnBnClickedOk8)

ON_BN_CLICKED(IDCANCEL12,&CCalculatorDlg:

:

OnBnClickedCancel12)

ON_BN_CLICKED(IDCANCEL11,&CCalculatorDlg:

:

OnBnClickedCancel11)

ON_BN_CLICKED(IDOK9,&CCalculatorDlg:

:

OnBnClickedOk9)

ON_BN_CLICKED(IDCANCEL13,&CCalculatorDlg:

:

OnBnClickedCancel13)

ON_BN_CLICKED(IDOK10,&CCalculatorDlg:

:

OnBnClickedOk10)

ON_BN_CLICKED(IDCANCEL15,&CCalculatorDlg:

:

OnBnClickedCancel15)

ON_BN_CLICKED(IDCANCEL14,&CCalculatorDlg:

:

OnBnClickedCancel14)

ON_WM_KEYUP()

END_MESSAGE_MAP()

//CCalculatorDlgmessagehandlers

BOOLCCalculatorDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

  CStringstrAboutMenu;

  strAboutMenu.LoadString(IDS_ABOUTBOX);

  if(!

strAboutMenu.IsEmpty())

  {

   pSysMenu->AppendMenu(MF_SEPARATOR);

   pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

  }

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);   //Setbigicon

SetIcon(m_hIcon,FALSE);  //Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

//--------------------------------------------------------------------------------------------------

//voidCCalculatorDlg:

:

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

//{

//inta=1;

//CDialog:

:

OnKeyDown(nChar,nRepCnt,nFlags);

//}

//voidCCalculatorDlg:

:

OnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags)

//{

//inta=1;

//

//CDialog:

:

OnKeyUp(nChar,nRepCnt,nFlags);

//}

voidCCalculatorDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

  CAboutDlgdlgAbout;

  dlgAbout.DoModal();

}

elseif(nID==SC_CLOSE)

{

  CCalculatorDlg:

:

OnOK();

}

else

{

  CDialog:

:

OnSysCommand(nID,lParam);

  

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCCalculatorDlg:

:

OnPaint()

{

if(IsIconic())

{

  CPaintDCdc(this);//devicecontextforpainting

  SendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc()),0);

  //Centericoninclientrectangle

  intcxIcon=GetSystemMetrics(SM_CXICON);

  intcyIcon=GetSystemMetrics(SM_CYICON);

  CRectrect;

  GetClientRect(&rect);

  intx=(rect.Width()-cxIcon+1)/2;

  inty=(rect.Height()-cyIcon+1)/2;

  //Drawtheicon

  dc.DrawIcon(x,y,m_hIcon);

}

else

{

  CDialog:

:

OnPaint();

}

}

//Thesystemcallsthisfunctiontoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCCalculatorDlg:

:

OnQueryDragIcon()

{

returnstatic_cast(m_hIcon);

}

//------------------------------OnButtonnClicked部分-------------------------------------------------------------------------

voidCCalculatorDlg:

:

OnBnClickedOk()

{

Caldata.CLEAR();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel()

{

Caldata.MC();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel2()

{

Caldata.MR();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk4()

{

Caldata.KEYIN

(1);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk6()

{

Caldata.KEYIN(4);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk2()

{

Caldata.MM();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel3()

{

Caldata.MA();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk3()

{

Caldata.PN();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel4()

{

Caldata.ADD();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel6()

{

Caldata.KEYIN

(2);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel5()

{

Caldata.KEYIN(3);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel8()

{

Caldata.KEYIN(6);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel9()

{

Caldata.KEYIN(5);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel7()

{

Caldata.MINUS();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk5()

{

Caldata.Mode_Error=Caldata.SQRT();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk7()

{

Caldata.SQR();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel10()

{

Caldata.BY();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk8()

{

Caldata.KEYIN(7);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel12()

{

Caldata.KEYIN(8);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel11()

{

Caldata.KEYIN(9);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk9()

{

Caldata.Mode_Error=Caldata.REC();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel13()

{

Caldata.DIV();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedOk10()

{

Caldata.Dot();

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel15()

{

Caldata.KEYIN(0);

UpdateDisplay();

}

voidCCalculatorDlg:

:

OnBnClickedCancel14()

{

Caldata.Mode_Error=Caldata.EQUAL();

UpdateDisplay();

}

//------------------------------------------Display部分-----------------------------------------------------------------

voidCCalculatorDlg:

:

UpdateDisplay()

{

if(!

Caldata.Mode_Error)

{   

  if(!

(Caldata.Mode_Dot)){   

   Cal_display.Format(_T("%lf"),Caldata.Data_Display);

   for(inti=Cal_display.GetLength()-1;i>1;i--)    //去掉尾部多余的0,这个方法可共用,可以写成STATIC

             {

    if(Cal_display.GetAt(i)=='.')

     break;

          if(Cal_display.GetAt(i)=='0')

          Cal_display.Delete(i);

    elsebreak;

             }

                         }

  else{

      if(Caldata.Data_Display!

=0)  

    {

     intj=0;

     Cal_display.Format(_T("%lf"),Caldata.Data_Display);

     for(inti=Cal_display.GetLength()-1;i>1;i--)

                      {

       if(Cal_display.GetAt(i)=='.')

                  break;

                     if(Cal_display.GetAt(i)=='0')

                      Cal_display.Delete(i);

       elsebreak;

                      }

     for(inti=Cal_display.GetLength()-1;i>1;i--)

     {   if(Cal_display.GetAt(i)=='.')break;j++;}

     if(j<=Caldata.Digi_Dot)

      for(inti=0;i

                                       Cal_display.Append(_T("0"));

    }

    else{

     

     Cal_display.Format(_T("0."));

     for(inti=0;i

     {

      Cal_display.Append(_T("0"));

     }

    }

  }

}

elseCal_display.Format(_T("ERROR"));

UpdateData(false);

}

voidCCalculatorDlg:

:

ResetDisplay()

{

}

//--------------------------------CALDATA部分-----------------------------------------------------------

Cal_Data:

:

Cal_Data()

{

  Data_Display=0;

  Data_Remember=0;

  Data_Last=0;

  Mode_Remenber=false;

  Mode_Input=false;

  Mode_Dot=false;

  Mode_Error=false;

  Digi_Dot=0;

  calaction=Cal_Action:

:

Action_Null;

}

voidCal_Data:

:

CLEAR()

{

  Data_Display=0;

  Data_Last=0;

  Mode_Input=false;

  Mode_Error=false;

  Mode_Dot=false;

  calaction=Cal_Action:

:

Action_Null;

}

voidCal_Data:

:

MA()

{

Data_Remember=Data_Remember+Data_Display;

}

voidCal_Data:

:

MM()

{

Data_Remember=Data_Remember-Data_Display;

}

voidCal_Data:

:

MR()

{

Data_Display=Data_Remember;

Mode_Input=false;

}

voidCal_Data:

:

MC()

{

Data_Remember=0;

Mode_Remenber=false;

}

voidCal_Data:

:

ADD()

{

Data_Last=Data_Display;

Mode_Dot=Mode_Input=false;              

cala

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1