📄 calcudlg.cpp
字号:
Swap = false;
point = true;
first = false;
deletepoint = true;
show();
}
void CCalcuDlg::OnButtonNine()
{
// TODO: Add your control notification handler code here
double count9;
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"9";
memset(temp,'\0',256);
MyStrcpy(temp,m_EditNumber);
count9=atof(temp);
m_EditNumber.Format(L"%f",count9);
SetPoint = true;
Swap = false;
point = true;
first = false;
deletepoint = true;
show();
}
void CCalcuDlg::OnButtonDivide()
{
// TODO: Add your control notification handler code here
// double b;
// char temp[256];
if (m_EditNumber == L"Error")
return;
OnButtonEqual();
memset(temp,'\0',256);
MyStrcpy(temp,m_EditNumber);
b=atof(temp);
m_firstoperator=b;
m_operate='/';
SetNew = true;
SetPoint = false;
Swap = true;
first = true;
show();
m_EditCopy = m_EditNumber;
m_EditNumber = L"1";
}
void CCalcuDlg::OnButtonSqrt()
{
// 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 (m_EditNumber == L"Error")
return;
if (b>=0)
{
m_firstoperator = sqrt(b);
m_EditNumber.Format(L"%f",m_firstoperator);
m_EditCopy = m_EditNumber;
show();
}
else
{
m_EditNumber = L"Error";
UpdateData(false);
}
m_operate = '\0';
}
void CCalcuDlg::OnButtonEqual()
{
// TODO: Add your control notification handler code here
// UpdateData(true);
memset(temp,'\0',256);
MyStrcpy(temp,m_EditNumber);
b=atof(temp);
SetNew = true;
SetPoint = false;
if (m_EditNumber == L"Error")
return;
switch(m_operate)
{
case '+':
m_firstoperator=b+m_firstoperator;
m_EditNumber.Format(L"%f",m_firstoperator);
show();
break;
case '-':
m_firstoperator=m_firstoperator-b;
m_EditNumber.Format(L"%f",m_firstoperator);
show();
break;
case '*':
m_firstoperator=b*m_firstoperator;
m_EditNumber.Format(L"%f",m_firstoperator);
show();
break;
case '/':
if(b == 0.0)
{
m_EditNumber = L"Error";
show();
}
else
{
m_firstoperator=m_firstoperator/b;
m_EditNumber.Format(L"%f",m_firstoperator);
show();
}
break;
default:
break;
}
m_operate = '\0';
}
void CCalcuDlg::OnButtonMadd()
{
// TODO: Add your control notification handler code here
if (m_EditNumber == L"Error")
return;
SetNew = true;
}
void CCalcuDlg::OnButtonZero()
{
// TODO: Add your control notification handler code here
double count;
if (m_EditNumber == L"Error")
return;
if (SetNew)
{
m_EditNumber = L" ";
SetNew = false;
}
Swap = false;
point = true;
first = false;
memset(temp,'\0',256);
MyStrcpy(temp,m_EditNumber);
count=atof(temp);
if (count == 0)
{
m_EditNumber = L"0";
CEdit* pedit = (CEdit *)GetDlgItem(IDC_EDIT1);
pedit->SetWindowText(m_EditNumber);
return;
}
m_EditNumber = m_EditNumber + L"0";
CEdit* pedit = (CEdit *)GetDlgItem(IDC_EDIT1);
pedit->SetWindowText(m_EditNumber);
}
void CCalcuDlg::OnButtonSign()
{
// 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;
b=-b;
m_EditNumber.Format(L"%f",b);
show();
m_operate = '\0';
}
void CCalcuDlg::OnButtonPoint()
{
// TODO: Add your control notification handler code here
if (m_EditNumber == L"Error")
return;
if (first)
{
m_EditNumber = L"0.";
UpdateData(false);
first = false;
SetNew = false;
return;
}
deletepoint = false;
SetNew = false;
if(point)
{
if (m_EditNumber == "0")
{
m_EditNumber=m_EditNumber+L".";
UpdateData(false);
return;
}
int i = m_EditNumber.GetLength();
while (i>=1)
{
if(m_EditNumber.GetAt(i-1)=='.')
return;
i--;
}
m_EditNumber=m_EditNumber+L".";
point = false;
}
show();
}
void CCalcuDlg::OnButtonAdd()
{
// TODO: Add your control notification handler code here
// double b;
// char temp[256];
//memset(temp,'\0',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::OnButtonC()
{
// TODO: Add your control notification handler code here
m_EditNumber = L"0";
m_firstoperator = 0.0;
m_operate = '\0';
SetNew = true;
Swap = false;
point = true;
UpdateData(false);
}
void CCalcuDlg::OnButtonCe()
{
// TODO: Add your control notification handler code here
m_EditNumber = L"0";
UpdateData(false);
SetNew = true;
}
void CCalcuDlg::OnButtonBackspace()
{
// TODO: Add your control notification handler code here
if (m_EditNumber == L"Error")
return;
if (Swap)
{
m_EditNumber = m_EditCopy;
Swap = false;
}
int i = m_EditNumber.GetLength();
if (i>=1)
{
m_EditNumber.Delete(i-1,1);
UpdateData(false);
if (i == 1)
{
m_EditNumber = L"0";
SetNew = true;
UpdateData(false);
}
}
}
void CCalcuDlg::OnButtonPercent()
{
// 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;
m_firstoperator=b/100;
m_EditCopy = m_EditNumber;
m_EditNumber.Format(L"%f",m_firstoperator);
m_EditCopy = m_EditNumber;
show();
m_operate = '\0';
}
void CCalcuDlg::show()
{
int i = m_EditNumber.GetLength();
while ((i>=1)&&(m_EditNumber.GetAt(i-1)=='0'))
{
if (m_EditNumber == L"0")
break;
m_EditNumber.Delete(i-1,1);
i-=1;
}
if (m_EditNumber == L"0")
{
CEdit* pedit=(CEdit *)GetDlgItem(IDC_EDIT1);
pedit->SetWindowText(m_EditNumber);
UpdateData(false);
return;
}
if (deletepoint)
{
if (m_EditNumber.GetAt(i-1)=='.')
{
m_EditNumber.Delete(i-1,1);
UpdateData(false);
return;
}
}
if (!SetPoint)
{
if (m_EditNumber.GetAt(i-1)=='.')
{
m_EditNumber.Delete(i-1,1);
}
}
CEdit* pedit=(CEdit *)GetDlgItem(IDC_EDIT1);
pedit->SetWindowText(m_EditNumber);
UpdateData(false);
}
void CCalcuDlg::MyStrcpy(char *strdes,CString strsuc)
{
LPWSTR mytemp=strsuc.GetBuffer(strsuc.GetLength());
int relen=::WideCharToMultiByte(CP_ACP, 0, mytemp, strsuc.GetLength(), strdes, 256, NULL, NULL);
}
void CCalcuDlg::OnButtonMs()
{
// TODO: Add your control notification handler code here
if (m_EditNumber == L"Error")
return;
memset(temp,'\0',256);
MyStrcpy(temp,m_EditNumber);
Savedata=atof(temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -