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

📄 calcudlg.cpp

📁 一个很完整的计算器代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// calcuDlg.cpp : implementation file
//

#include "stdafx.h"
#include "calcu.h"
#include "calcuDlg.h"
#include "math.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCalcuDlg dialog


CCalcuDlg::CCalcuDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCalcuDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCalcuDlg)
	m_EditNumber = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_storevalue=0.0;
	m_firstoperator=0;

	m_operate='n';
	Swap = false;
	first = false;
	deletepoint = false;
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCalcuDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCalcuDlg)
	DDX_Text(pDX, IDC_EDIT1, m_EditNumber);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCalcuDlg, CDialog)
	//{{AFX_MSG_MAP(CCalcuDlg)
	ON_BN_CLICKED(IDC_BUTTON_ONE, OnButtonOne)
	ON_BN_CLICKED(IDC_BUTTON_TWO, OnButtonTwo)
	ON_BN_CLICKED(IDC_BUTTON_THREE, OnButtonThree)
	ON_BN_CLICKED(IDC_BUTTON_MINUS, OnButtonMinus)
	ON_BN_CLICKED(IDC_BUTTON_COUNTDOWN, OnButtonCountdown)
	ON_BN_CLICKED(IDC_BUTTON_MULT, OnButtonMult)
	ON_BN_CLICKED(IDC_BUTTON_SIX, OnButtonSix)
	ON_BN_CLICKED(IDC_BUTTON_FIVE, OnButtonFive)
	ON_BN_CLICKED(IDC_BUTTON_FOUR, OnButtonFour)
	ON_BN_CLICKED(IDC_BUTTON_MR, OnButtonMr)
	ON_BN_CLICKED(IDC_BUTTON_MC, OnButtonMc)
	ON_BN_CLICKED(IDC_BUTTON_SEVEN, OnButtonSeven)
	ON_BN_CLICKED(IDC_BUTTON_EIGHT, OnButtonEight)
	ON_BN_CLICKED(IDC_BUTTON_NINE, OnButtonNine)
	ON_BN_CLICKED(IDC_BUTTON_DIVIDE, OnButtonDivide)
	ON_BN_CLICKED(IDC_BUTTON_SQRT, OnButtonSqrt)
	ON_BN_CLICKED(IDC_BUTTON_EQUAL, OnButtonEqual)
	ON_BN_CLICKED(IDC_BUTTON_MADD, OnButtonMadd)
	ON_BN_CLICKED(IDC_BUTTON_ZERO, OnButtonZero)
	ON_BN_CLICKED(IDC_BUTTON_SIGN, OnButtonSign)
	ON_BN_CLICKED(IDC_BUTTON_POINT, OnButtonPoint)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_C, OnButtonC)
	ON_BN_CLICKED(IDC_BUTTON_CE, OnButtonCe)
	ON_BN_CLICKED(IDC_BUTTON_BACKSPACE, OnButtonBackspace)
	ON_BN_CLICKED(IDC_BUTTON_PERCENT, OnButtonPercent)
	ON_BN_CLICKED(IDC_BUTTON_MS, OnButtonMs)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCalcuDlg message handlers

BOOL CCalcuDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen
	point = true;
//	SetWindowPos (NULL , 100 , 60 , 200 , 180 , SWP_NOMOVE|SWP_NOZORDER );
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CCalcuDlg::OnButtonOne() 
{
	// TODO: Add your control notification handler code here
    double count1;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"1";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count1=atof(temp);
	m_EditNumber.Format(L"%f",count1);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonTwo() 
{
	// TODO: Add your control notification handler code here
	double count2;
	if (m_EditNumber == L"Error")
		return;	
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"2";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count2=atof(temp);
	m_EditNumber.Format(L"%f",count2);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonThree() 
{
	// TODO: Add your control notification handler code here
	double count3;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"3";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count3=atof(temp);
	m_EditNumber.Format(L"%f",count3);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonMinus() 
{
	// TODO: Add your control notification handler code here
//	double b;
//	char temp[256];
	if (m_EditNumber == L"Error")
		return;
	OnButtonEqual();
	MyStrcpy(temp,m_EditNumber);
	temp[m_EditNumber.GetLength()]='\0';
	b=atof(temp); 
	m_firstoperator=b;
	b = 0;
	SetNew = true;
	SetPoint = false;
	Swap = true;
	first = true;
	show();
	m_EditCopy = m_EditNumber;
    m_operate='-';
	m_EditNumber = L"0";
}

void CCalcuDlg::OnButtonCountdown() 
{
	// TODO: Add your control notification handler code here
//	double b;
//	char temp[256];
	if (m_EditNumber == L"Error")
		return;
	if (Swap)
	{
		m_EditNumber = m_EditCopy;
		Swap = false;
	}
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
    b=atof(temp);
	SetNew = true;
	SetPoint = false;
	first = true;
	if(b == 0.0)
	{
		m_EditNumber = L"Error";
		show();
		return;
	}
	m_firstoperator=1/b;
	m_EditNumber.Format(L"%f",m_firstoperator);
	m_EditCopy = m_EditNumber;
	show();
	m_operate = '\0';
}

void CCalcuDlg::OnButtonMult() 
{
	// TODO: Add your control notification handler code here
//	double b;
//	char temp[256];
	if (m_EditNumber == L"Error")
		return;
	OnButtonEqual();
	MyStrcpy(temp,m_EditNumber);
	temp[m_EditNumber.GetLength()]='\0';
	b=atof(temp);
	m_firstoperator=b;
	SetNew = true;
	SetPoint = false;
	Swap = true;
	first = true;
	show();
//	UpdateData(false);
	m_operate='*';
	m_EditCopy = m_EditNumber;
	m_EditNumber = L"1";
}

void CCalcuDlg::OnButtonSix() 
{
	// TODO: Add your control notification handler code here
	double count6;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"6";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count6=atof(temp);
	m_EditNumber.Format(L"%f",count6);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonFive() 
{
	// TODO: Add your control notification handler code here
	double count5;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"5";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count5=atof(temp);
	m_EditNumber.Format(L"%f",count5);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonFour() 
{
	// TODO: Add your control notification handler code here
	double count4;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"4";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count4=atof(temp);
	m_EditNumber.Format(L"%f",count4);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonMr() 
{
	// TODO: Add your control notification handler code here
	if (m_EditNumber == L"Error")
		return;
	m_EditNumber.Format(L"%f",Savedata);
	show();
	SetNew = true;
}

void CCalcuDlg::OnButtonMc() 
{
	// TODO: Add your control notification handler code here
	if (m_EditNumber == L"Error")
		return;
	Savedata = 0.0;
}

void CCalcuDlg::OnButtonSeven() 
{
	// TODO: Add your control notification handler code here
	double count7;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}
	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	m_EditNumber = m_EditNumber + L"7";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count7=atof(temp);
	m_EditNumber.Format(L"%f",count7);
	SetPoint = true;
	Swap = false;
	point = true;
	first = false;
	deletepoint = true;
	show();
}

void CCalcuDlg::OnButtonEight() 
{
	// TODO: Add your control notification handler code here
	double count8;
	if (m_EditNumber == L"Error")
		return;
	if (SetNew)
	{
		m_EditNumber = L" ";
		SetNew = false;
	}

	if (m_EditNumber == L"0")
		m_EditNumber = L"";
	
	m_EditNumber = m_EditNumber + L"8";
	memset(temp,'\0',256);
	MyStrcpy(temp,m_EditNumber);
	count8=atof(temp);
	m_EditNumber.Format(L"%f",count8);
	SetPoint = true;

⌨️ 快捷键说明

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