⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gss_calculatorview.cpp

📁 简单的计算机,可以实现加减乘除,函数sin,cos,tan等功能
💻 CPP
字号:
// gss_calculatorView.cpp : implementation of the CGss_calculatorView class
//

#include "stdafx.h"
#include "gss_calculator.h"
#include "Mydata.h"
#include "Myoperator.h"
#include "gss_calculatorDoc.h"
#include "gss_calculatorView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern Myoperator optrs[5];
/////////////////////////////////////////////////////////////////////////////
// CGss_calculatorView

IMPLEMENT_DYNCREATE(CGss_calculatorView, CFormView)

BEGIN_MESSAGE_MAP(CGss_calculatorView, CFormView)
	//{{AFX_MSG_MAP(CGss_calculatorView)
	ON_BN_CLICKED(IDC_Num7, OnNum7)
	ON_BN_CLICKED(IDC_Num2, OnNum2)
	ON_BN_CLICKED(IDC_Num8, OnNum8)
	ON_BN_CLICKED(IDC_Num9, OnNum9)
	ON_BN_CLICKED(IDC_Divide, OnDivide)
	ON_BN_CLICKED(IDC_Num4, OnNum4)
	ON_BN_CLICKED(IDC_Num5, OnNum5)
	ON_BN_CLICKED(IDC_Num6, OnNum6)
	ON_BN_CLICKED(IDC_Multiply, OnMultiply)
	ON_BN_CLICKED(IDC_Num1, OnNum1)
	ON_BN_CLICKED(IDC_Num3, OnNum3)
	ON_BN_CLICKED(IDC_Minus, OnMinus)
	ON_BN_CLICKED(IDC_Num0, OnNum0)
	ON_BN_CLICKED(IDC_Decimal, OnDecimal)
	ON_BN_CLICKED(IDC_Negative, OnNegative)
	ON_BN_CLICKED(IDC_Plus, OnPlus)
	ON_BN_CLICKED(IDC_Equal, OnEqual)
	ON_BN_CLICKED(IDC_Sin, OnSin)
	ON_BN_CLICKED(IDC_Sqrt, OnSqrt)
	ON_BN_CLICKED(IDC_Cos, OnCos)
	ON_BN_CLICKED(IDC_Tan, OnTan)
	ON_BN_CLICKED(IDC_Cot, OnCot)
	ON_BN_CLICKED(IDC_Ln, OnLn)
	ON_BN_CLICKED(IDC_Log, OnLog)
	ON_BN_CLICKED(IDC_Restart, OnRestart)
	ON_EN_CHANGE(IDC_EDIT_RESULT, OnChangeEditResult)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGss_calculatorView construction/destruction

CGss_calculatorView::CGss_calculatorView()
	: CFormView(CGss_calculatorView::IDD)
{
	//{{AFX_DATA_INIT(CGss_calculatorView)
	m_input_result = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here
   a.Initstack();
   m_input_result="0";
   optpress=false;
   restart=true;
}

CGss_calculatorView::~CGss_calculatorView()
{
}

void CGss_calculatorView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGss_calculatorView)
	DDX_Control(pDX, IDC_EDIT_RESULT, m_edit_result);
	DDX_Text(pDX, IDC_EDIT_RESULT, m_input_result);
	//}}AFX_DATA_MAP
}

BOOL CGss_calculatorView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CGss_calculatorView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CGss_calculatorView printing

BOOL CGss_calculatorView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CGss_calculatorView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CGss_calculatorView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CGss_calculatorView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CGss_calculatorView diagnostics

#ifdef _DEBUG
void CGss_calculatorView::AssertValid() const
{
	CFormView::AssertValid();
}

void CGss_calculatorView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CGss_calculatorDoc* CGss_calculatorView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGss_calculatorDoc)));
	return (CGss_calculatorDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGss_calculatorView message handlers

void CGss_calculatorView::OnNum7() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="7";
	else
        m_input_result+="7";
	optpress=false;
	restart=false;
	UpdateData(FALSE);

	
}

void CGss_calculatorView::OnNum2() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="2";
	else
        m_input_result+="2";
	optpress=false;
	restart=false;
	UpdateData(FALSE);
	
}

void CGss_calculatorView::OnNum8() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="8";
	else
        m_input_result+="8";
	optpress=false;
	restart=false;
	UpdateData(FALSE);
	
}

void CGss_calculatorView::OnNum9() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="9";
	else
        m_input_result+="9";
	optpress=false;
	restart=false;
	UpdateData(FALSE);

	
}

void CGss_calculatorView::OnDivide() 
{
  UpdateData(TRUE);
  a.Pushoptr(optrs[4]);
  a.Pushnumber(a.Convert(m_input_result));
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
}

void CGss_calculatorView::OnNum4() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="4";
	else
        m_input_result+="4";
	optpress=false;
	restart=false;
	UpdateData(FALSE);
	
}

void CGss_calculatorView::OnNum5() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="5";
	else
        m_input_result+="5";
	optpress=false;
	restart=false;
	UpdateData(FALSE);

	
}

void CGss_calculatorView::OnNum6() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="6";
	else
        m_input_result+="6";
	optpress=false;
	restart=false;
	UpdateData(FALSE);

	
}

void CGss_calculatorView::OnMultiply() 
{
  UpdateData(TRUE);
  a.Pushoptr(optrs[3]);
  a.Pushnumber(a.Convert(m_input_result));
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
  
}

void CGss_calculatorView::OnNum1() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="1";
	else
        m_input_result+="1";
	optpress=false;
	restart=false;
	UpdateData(FALSE);

}

void CGss_calculatorView::OnNum3() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="3";
	else
        m_input_result+="3";
	optpress=false;
	restart=false;
	UpdateData(FALSE);
	
}

void CGss_calculatorView::OnMinus() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[2]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
  
}

void CGss_calculatorView::OnNum0() 
{
	UpdateData(TRUE);
	if(optpress==true||restart==true)
        m_input_result="0";
	else
        m_input_result+="0";
	optpress=false;
	restart=false;
	UpdateData(FALSE);
}

void CGss_calculatorView::OnDecimal() 
{
	UpdateData(TRUE);
    m_input_result+=".";
	UpdateData(FALSE);
}

void CGss_calculatorView::OnNegative() 
{
  UpdateData(TRUE);
  m_input_result="-"+m_input_result;
  UpdateData(FALSE);	
}

void CGss_calculatorView::OnPlus() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[1]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
  
}

void CGss_calculatorView::OnEqual() 
{
   UpdateData(TRUE);
   if(optpress==false)
     a.Pushnumber(a.Convert(m_input_result));
   a.Allcalculate();
   m_input_result=a.Get_result();
   restart=true;
   UpdateData(FALSE);
  	
}

void CGss_calculatorView::OnSin() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[6]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
	
}

void CGss_calculatorView::OnSqrt() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[5]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);
}

void CGss_calculatorView::OnCos() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[7]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);	
}

void CGss_calculatorView::OnTan() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[8]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);	
	
}

void CGss_calculatorView::OnCot() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[9]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);	
	
}

void CGss_calculatorView::OnLn() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[10]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);	

}

void CGss_calculatorView::OnLog() 
{
  UpdateData(TRUE);
  a.Pushnumber(a.Convert(m_input_result));
  a.Pushoptr(optrs[11]);
  m_input_result=a.Get_result();
  optpress=true;
  UpdateData(FALSE);	
	
}

void CGss_calculatorView::OnRestart() 
{
    UpdateData(TRUE);
	m_input_result='0';
	UpdateData(FALSE);

}

void CGss_calculatorView::OnChangeEditResult() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CFormView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -