📄 计算器dlg.cpp
字号:
m_edit_io.Format("%lf",m);
UpdateData(0);
}
if(b==16)
{
double m=otherstoten(m_edit_io,b);
b=10;
m_edit_io.Format("%lf",m);
UpdateData(0);
}
b=10;
}
void CMyDlg::OnRADIOOct() //八进制
{
// TODO: Add your control notification handler code here
CWnd *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_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(0);
pWnd=this->GetDlgItem(IDC_BTN_9);
pWnd->EnableWindow(0);
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=8;return;}
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
b=8;
m_edit_io=tentoothers(temp,b);
UpdateData(0);
}
if(b==16)
{
double m=otherstoten(m_edit_io,b);
b=8;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
if(b==2)
{
double m=otherstoten(m_edit_io,b);
b=8;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
b=8;
}
void CMyDlg::OnRADIOBin() //二进制
{
// TODO: Add your control notification handler code here
CWnd *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_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(0);
pWnd=this->GetDlgItem(IDC_BTN_9);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_7);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_6);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_5);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_4);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_3);
pWnd->EnableWindow(0);
pWnd=this->GetDlgItem(IDC_BTN_2);
pWnd->EnableWindow(0);
UpdateData(1);
if(b==10)
{
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) {b=2;return;}
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
b=2;
m_edit_io=tentoothers(temp,b);
UpdateData(0);
}
if(b==8)
{
double m=otherstoten(m_edit_io,b);
b=2;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
if(b==16)
{
double m=otherstoten(m_edit_io,b);
b=2;
m_edit_io=tentoothers(m,b);
UpdateData(0);
}
b=2;
}
void CMyDlg::OnBTNln()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) return;
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
if(temp<0)
{
AfxMessageBox ("语法不合,负数不能求对数!");UpdateData(0);return;
}
double m=log(temp);
m_edit_io.Format("%lf",m);
UpdateData(0);
}
void CMyDlg::OnBTNlog()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) return;
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
if(temp<0)
{
AfxMessageBox ("语法不合,负数不能求对数!");UpdateData(0);return;
}
double m=log10(temp);
m_edit_io.Format("%lf",m);
UpdateData(0);
}
void CMyDlg::OnBTNnn()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) return;
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
double j=temp,m=1;
for(;j>0;j--)
{
m*=j;
}
m_edit_io.Format("%lf",m);
UpdateData(0);
}
void CMyDlg::OnBTNdaoshu()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int i=0;
char str[100];
int len=m_edit_io.GetLength()-1;
if(len<0) return;
for(;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atof(str);
if(temp==0)
{
AfxMessageBox ("语法不合,0不能作为分母!");UpdateData(0);return;
}
double m=1/temp;
m_edit_io.Format("%lf",m);
UpdateData(0);
}
void CMyDlg::OnBTNMod()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="Mod";
mod=1;
UpdateData(0);
}
void CMyDlg::OnBTNAnd()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="And";
and=1;
UpdateData(0);
}
void CMyDlg::OnBTNOr()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="Or";
or=1;
UpdateData(0);
}
void CMyDlg::OnBTNXor()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="Xor";
xor=1;
UpdateData(0);
}
void CMyDlg::OnBTNLsh()
{
// TODO: Add your control notification handler code here
UpdateData(1);
m_edit_io+="Lsh";
lsh=1;
UpdateData(0);
}
void CMyDlg::OnBTNNot()
{
// TODO: Add your control notification handler code here
}
void CMyDlg::OnBTNInt()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
int i;
char str[100];
if(len<0) return;
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
double temp=atoi(str);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBtnDy()
{
// TODO: Add your control notification handler code here
UpdateData(1);
if(xy==1)
{
int len=m_edit_io.GetLength()-1;
int i,dot;
CString cher1,cher2;
for(i=0;i<=len;i++)
{
if(m_edit_io[i]=='^')
{
dot=i;break;
}
}
for(i=0;i<dot;i++)
{
cher1+=m_edit_io[i];
}
for(i=dot+1;i<=len;i++)
{
cher2+=m_edit_io[i];
}
double x,y;
x=atof(cher1);
y=atof(cher2);
double temp=pow(x,y);
CString str;
str.Format("%lf",temp);
AddToHistr(m_edit_io+" = "+ str);
m_edit_io.Format("%lf",temp);
xy=0;
UpdateData(0);return;
}
if(mod==1)
{
int len=m_edit_io.GetLength()-1;
int i,dot;
CString cher1,cher2;
for(i=0;i<=len;i++)
{
if(m_edit_io[i]=='M')
{
dot=i;break;
}
}
for(i=0;i<dot;i++)
{
cher1+=m_edit_io[i];
}
for(i=dot+3;i<=len;i++)
{
cher2+=m_edit_io[i];
}
double x,y;
x=atof(cher1);
y=atof(cher2);
double temp=fmod(x,y);
CString str;
str.Format("%lf",temp);
AddToHistr(m_edit_io+" = "+ str);
m_edit_io.Format("%lf",temp);
mod=0;
UpdateData(0);return;
}
double temp;
int len=m_edit_io.GetLength()-1;
if(len<0) return;
temp=calculate(m_edit_io);
CString str;
str.Format("%lf",temp);
AddToHistr(m_edit_io+" = "+ str);
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnBUTTONbhao()
{
// 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];
for(i=1;i<=len;i++)
{
if((m_edit_io[i]<='9'&&m_edit_io[i]>='0')||(m_edit_io[i]<='F'&&m_edit_io[i]>='A')||m_edit_io[i]=='.')
{
str[i-1]=m_edit_io[i-1];str[len]=m_edit_io[len];
}
else
{AfxMessageBox ("语法不合!");UpdateData(0);return; }
}
if(m_edit_io[0]=='(')
{
AfxMessageBox("语法不合!");UpdateData(0);return;
}
double temp=atof(str);
temp=-temp;
m_edit_io.Format("%lf",temp);
UpdateData(0);
}
void CMyDlg::OnRADIODeg()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0) {deg=1;rad=0;return;}
int i;
char str[100];
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
if(deg==0)
{
double temp=atof(str);
double m=temp*(180/3.1415926535897932384626433832795);
m_edit_io.Format("%lf",m);
}
deg=1;rad=0;
UpdateData(0);
}
void CMyDlg::OnRADIORad()
{
// TODO: Add your control notification handler code here
UpdateData(1);
int len=m_edit_io.GetLength()-1;
if(len<0) {deg=0;rad=1;return;}
int i;
char str[100];
for(i=0;i<=len;i++)
{
str[i]=m_edit_io[i];
}
if(deg==1)
{
double temp=atof(str);
double m=temp/(180/3.1415926535897932384626433832795);
m_edit_io.Format("%lf",m);
}
deg=0;rad=1;
UpdateData(0);
}
void CMyDlg::OnBTNhistory()
{
// TODO: Add your control notification handler code here
CPoint point;
GetCursorPos(&point);
m_menu.TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,this);
}
void CMyDlg::AddToHistr(CString strExp) //历史
{
if(m_menu.m_hMenu)
{
int b=m_menu.GetMenuItemCount();
BOOL bRet=m_menu.AppendMenu(MF_STRING,IMENU_ITEM_ID+b,strExp);
if(bRet)m_str_exp.Add(strExp);
}
}
void CMyDlg::OnMenuSelect(UINT nID) //历史
{
UpdateData(1);
int i=nID-IMENU_ITEM_ID;
CString str=m_str_exp.GetAt(i);
m_edit_io=str;
UpdateData(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -