📄 计算器dlg.cpp
字号:
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
char cher=m_edit_io[len];
if(len==0 && cher=='-')return;
if(cher=='(')return;
if(len>=1 && m_edit_io[len-1]=='('&&cher=='-')return;
if(cher=='+' || cher=='-')
{
m_edit_io.Delete(len,1);m_edit_io+="*";UpdateData(0);return;
}
if(cher=='*'|| cher=='/')
{
m_edit_io.Delete(len,1);m_edit_io+="*";UpdateData(0);return;
}
//UpdateData(1);
else m_edit_io+="*";
UpdateData(0);
}
void CMyDlg::OnBTNchu()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
char cher=m_edit_io[len];
if(len==0 && cher=='-')return;
if(cher=='(')return;
if(len>=1 &&m_edit_io[len-1]=='('&&cher=='-')return;
if(cher=='+' || cher=='-')
{
m_edit_io.Delete(len,1);m_edit_io+="/";UpdateData(0);return;
}
if(cher=='*'|| cher=='/')
{
m_edit_io.Delete(len,1);m_edit_io+="/";UpdateData(0);return;
}
//UpdateData(1);
else m_edit_io+="/";
UpdateData(0);
}
void CMyDlg::OnBTNspace()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+=" ";
UpdateData(0);
}
void CMyDlg::OnBTNexit()
{
// TODO: Add your control notification handler code here
UpdateData(1);
exit(0);
UpdateData(0);
}
void CMyDlg::OnRADIOHex() //十六进制
{
// TODO: Add your control notification handler code here
CWnd *pWnd=this->GetDlgItem(IDC_BTN_A);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_B);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_C);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_D);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_Ebig);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_F);
pWnd->EnableWindow(true);
pWnd=this->GetDlgItem(IDC_BTN_sin);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_cos);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_tan);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_cot);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_8);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_9);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_7);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_6);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_5);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_4);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_3);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_2);
pWnd->EnableWindow(1);
UpdateData(1);
if(b==10)
{
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) {b=16;return;}
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
b=16;
m_edit_io=tentoothers(temp,b);
UpdateData(0);
}
if(b==8)
{
double m=otherstoten(m_edit_io,b);
b=16;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
if(b==2)
{
double m=otherstoten(m_edit_io,b);
b=16;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
b=16;
}
void CMyDlg::OnChangeEditIo()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
char cher=m_edit_io[len];
if(cher>'F' && cher<='Z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher>'f' && cher<='z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(IsDlgButtonChecked(IDC_RADIO_Dec))
{
if(cher>='a' && cher<='z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher>='A' && cher<='Z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
}
else if(IsDlgButtonChecked(IDC_RADIO_Oct))
{
if(cher>='a' && cher<='z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher>='A' && cher<='Z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher=='8' || cher=='9')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
}
else if(IsDlgButtonChecked(IDC_RADIO_Bin))
{
if(cher>='a' && cher<='z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher>='A' && cher<='Z')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
if(cher>='2' && cher<='9')
{
m_edit_io.Delete(len,1);UpdateData(0);return;
}
}
}
void CMyDlg::OnBTNMyword()
{
}
void CMyDlg::OnBTNleftbraket()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)
{
m_edit_io+="("; UpdateData(0);return;
}
char cher=m_edit_io[len];
if(cher=='+' || cher=='-'||cher=='(')
{
m_edit_io+="("; UpdateData(0);return;
}
if(cher=='*' || cher=='/')
{
m_edit_io+="("; UpdateData(0);return;
}
//UpdateData(0);
}
void CMyDlg::OnBTNrightbraket()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
char cher=m_edit_io[len];
if((cher>='0'&&cher<='9') || (cher>='A' && cher<='F') || cher==')')
m_edit_io+=")";
UpdateData(0);
}
void CMyDlg::OnBTNpi()
{
// TODO: Add your control notification handler code here
UpdateData(1);
if(IsDlgButtonChecked(IDC_RADIO_Dec))
{
int len=m_edit_io.GetLength()-1;
if(len<0)
{
m_edit_io+="3.141592653589793"; UpdateData(0);return;
}
char cher=m_edit_io[len];
if(cher=='(')
{
m_edit_io+="3.141592653589793"; UpdateData(0);return;
}
if(cher=='+' || cher=='-')
{
m_edit_io+="3.141592653589793"; UpdateData(0);return;
}
if(cher=='*' || cher=='/')
{
m_edit_io+="3.141592653589793"; UpdateData(0);return;
}
}
else AfxMessageBox("语法不合!pi是十进制数据!");
//UpdateData(0);
}
void CMyDlg::OnBTNe()
{
// TODO: Add your control notification handler code here
UpdateData(1);
if(IsDlgButtonChecked(IDC_RADIO_Dec))
{
int len=m_edit_io.GetLength()-1;
if(len<0)
{
m_edit_io+="2.718281828459045"; UpdateData(0);return;
}
char cher=m_edit_io[len];
if(cher=='(')
{
m_edit_io+="2.718281828459045"; UpdateData(0);return;
}
if(cher=='+' || cher=='-')
{
m_edit_io+="2.718281828459045"; UpdateData(0);return;
}
if(cher=='*' || cher=='/')
{
m_edit_io+="2.718281828459045"; UpdateData(0);return;
}
}
else AfxMessageBox("语法不合!e是十进制数据!");
//m_edit_io+="2.718281828459045";
//UpdateData(0);
}
void CMyDlg::OnBTNsin()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
int i;
char str[100];
double m;
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double k=atof(str);
if(deg==1)
{
m=k/57.2957795130823208;
}
if(rad==1)
{
m=k;
}
double temp=sin(m);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBTNcos()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
int i;
char str[100];
double m;
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double k=atof(str);
if(deg==1)
{
m=k/57.2957795130823208;
}
if(rad==1)
{
m=k;
}
double temp=cos(m);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBTNtan()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
int i;
char str[100];
double m;
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double k=atof(str);
if(deg==1)
{
while(k>360)
{
k=k-360;
}
if(k==90||k==270)
{
AfxMessageBox ("语法不合!");UpdateData(0);return;
}
m=k/57.2957795130823208;
}
if(rad==1)
{
while(k>6.283185)
{
k=k-6.283185;
}
if(k==1.570796||k==4.712389)
{
AfxMessageBox ("语法不合!");UpdateData(0);return;
}
m=k;
}
double temp=tan(m);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBTNcot()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0)return;
int i;
char str[100];
double m;
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double k=atof(str);
if(deg==1)
{
while(k>360)
{
k=k-360;
}
if(k==0||k==180)
{
AfxMessageBox ("语法不合!");UpdateData(0);return;
}
m=k/57.2957795130823208;
}
if(rad==1)
{
while(k>6.283185)
{
k=k-6.283185;
}
if(k==0||k==3.141592653589793)
{
AfxMessageBox ("语法不合!");UpdateData(0);return;
}
m=k;
}
double temp=1/tan(m);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBTNxy()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="^";
xy=1;
UpdateData(0);
}
void CMyDlg::OnRADIODec() //十进制
{
// TODO: Add your control notification handler code here
CWnd *pWnd=this->GetDlgItem(IDC_BTN_sin);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_cos);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_tan);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_cot);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_A);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_B);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_C);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_D);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_Ebig);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_F);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_8);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_9);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_7);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_6);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_5);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_4);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_3);
pWnd->EnableWindow(1);
pWnd=this->GetDlgItem(IDC_BTN_2);
pWnd->EnableWindow(1);
UpdateData(1);
// int i=0;
// char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0)
{
b=10;return;
}
//for(;i<=len;i++)
//{
// str[i]=m_edit_io[i];
//}
if(b==2)
{
double m=otherstoten(m_edit_io,b);
b=10;
m_edit_io.Format("%lf",m);
UpdateData(0);
}
if(b==8)
{
double m=otherstoten(m_edit_io,b);
b=10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -