📄 gss_calculatorview.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 + -