📄 我的计算器 dlg.cpp
字号:
m_TableFlag=TRUE;
m_symbol='-';
GetDlgItem(IDC_EDIT3)->EnableWindow(SW_SHOW);
m_Number2.ShowWindow(SW_SHOW);
m_Number1.GetWindowText (m_str1,20);
int i=0;
while(m_str1[i])
{
if(m_str1[i]<'0'||m_str1[i]>'9')
{
if(!Fflag)
{
MessageBox("你输入的整数中可能出现了非0——9的非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
else if(m_str1[i]!='.')
{
MessageBox("你输入的数据中有非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
}
i++;
}
m_data1=atof((LPCTSTR)m_str1);
m_Symbol.SetWindowText("-");
UpdateData(FALSE);
}
void CMyDlg::OnMulti()
{
// TODO: Add your control notification handler code here
m_TableFlag=TRUE;
m_symbol='*';
GetDlgItem(IDC_EDIT3)->EnableWindow(SW_SHOW);
m_Number2.ShowWindow(SW_SHOW);
m_Number1.GetWindowText (m_str1,20);
int i=0;
while(m_str1[i])
{
if(m_str1[i]<'0'||m_str1[i]>'9')
{
if(!Fflag)
{
MessageBox("你输入的整数中可能出现了非0——9的非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
else if(m_str1[i]!='.')
{
MessageBox("你输入的数据中有非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
}
i++;
}
m_data1=atof((LPCTSTR)m_str1);
m_Symbol.SetWindowText("*");
UpdateData(FALSE);
}
void CMyDlg::OnDivid()
{
// TODO: Add your control notification handler code here
m_TableFlag=TRUE;
m_symbol='/';
GetDlgItem(IDC_EDIT3)->EnableWindow(SW_SHOW);
m_Number2.ShowWindow(SW_SHOW);
m_Number1.GetWindowText (m_str1,20);
int i=0;
while(m_str1[i])
{
if(m_str1[i]<'0'||m_str1[i]>'9')
{
if(!Fflag)
{
MessageBox("你输入的整数中可能出现了非0——9的非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
else if(m_str1[i]!='.')
{
MessageBox("你输入的数据中有非法数据,请重新键入你的数据!\t","错误提示", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
m_TableFlag=FALSE;
return;
}
}
i++;
}
m_data1=atof((LPCTSTR)m_str1);
m_Symbol.SetWindowText("/");
UpdateData(FALSE);
}
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
//设置四个功能键:退出,删除,清零,继续的映射函数
//退出
void CMyDlg::OnOK()
{
// TODO: Add extra validation here
if(MessageBox("你真的要退出吗!\t","错误提示", MB_ICONQUESTION|MB_OKCANCEL|MB_DEFBUTTON2)==IDOK)
{
MessageBox("谢谢使用!\t","致谢框", MB_ICONWARNING|MB_OK|MB_DEFBUTTON1);
CDialog::OnOK();
}
}
///清除
void CMyDlg::OnClear()
{
// TODO: Add your control notification handler code here
m_result=0;
m_data1=0;
m_data2=0;
memset(m_str1,0,sizeof(m_str1));
memset(m_str2,0,sizeof(m_str2));
m_TableFlag=FALSE;
m_Number1.SetSel (0,-1);
m_Number1.ReplaceSel ("");
m_Number2.SetSel (0,-1);
m_Number2.ReplaceSel ("");
m_Symbol.SetSel (0,-1);
m_Symbol.ReplaceSel ("");
m_Result="";
UpdateData(FALSE);
}
//删除
void CMyDlg::OnDelete()
{
// TODO: Add your control notification handler code here
if(m_DeleteFlag)
{
if(!m_TableFlag)
{
int i=0;
m_Number1.GetWindowText(m_str1,20);
while(m_str1[i])
i++;
m_str1[i-1]=NULL;
m_Number1.SetWindowText(m_str1);
}
else
{
int i=0;
m_Number2.GetWindowText(m_str2,20);
while(m_str2[i])
i++;
m_str2[i-1]=NULL;
m_Number2.SetWindowText(m_str2);
}
}
else
{
memset(m_str1,0,sizeof(m_str1));
m_Number1.SetSel(0,-1);
m_Number1.ReplaceSel("");
}
UpdateData(FALSE);
}
//继续
void CMyDlg::OnContinue()
{
// TODO: Add your control notification handler code here
memset(m_str2,0,sizeof(m_str2));
m_TableFlag=FALSE;
int i=0;
while(m_str1[i])
i++;
if(m_str1[i]=='.')
if(Fflag)
m_str1[i-1]=NULL;
m_Number1.SetWindowText(m_str1);
m_Number2.SetSel (0,-1);
m_Number2.ReplaceSel ("");
m_Symbol.SetSel (0,-1);
m_Symbol.ReplaceSel ("");
m_Result="";
UpdateData(FALSE);
}
void CMyDlg::OnQuitKeyItro()
{
// TODO: Add your command handler code here
MessageBox("点击这个键退出计算器!\n\n明白吗?","退出键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
/////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 删除标志的设置
void CMyDlg::OnDeleteSet()
{
// TODO: Add your command handler code here
m_DeleteFlag=TRUE;
m_DelType.SetSel(0,-1);
m_DelType.ReplaceSel("每次删去一个数字");
UpdateData(FALSE);
}
void CMyDlg::OnDeleteChange()
{
// TODO: Add your command handler code here
m_DeleteFlag=FALSE;
m_DelType.SetSel(0,-1);
m_DelType.ReplaceSel("每次删去整个数据");
UpdateData(FALSE);
}
//////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
//计算方式标志的设置
void CMyDlg::OnCalInit()
{
// TODO: Add your command handler code here
m_CommonCalculate=TRUE;
m_CalType.SetSel(0,-1);
m_CalType.ReplaceSel("日常运算");
UpdateData(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(SW_SHOW);
m_Number2.ShowWindow(SW_SHOW);
}
void CMyDlg::OnCalChange()
{
// TODO: Add your command handler code here
m_CommonCalculate=FALSE;
m_CalType.SetSel(0,-1);
m_CalType.ReplaceSel("科学运算");
UpdateData(FALSE);
m_Number2.SetSel (0,-1);
m_Number2.ReplaceSel ("");
m_Number2.EnableWindow(FALSE);
UpdateData(FALSE);
}
//////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
//科学运算的映射函数的处理
void CMyDlg::Onln()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate&&MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=log(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其ln值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
void CMyDlg::Onlog()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate)
{
if(MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=log10(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其lg值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
void CMyDlg::OnSin()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate)
{
if(MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=sin(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其sin值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
void CMyDlg::OnCos()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate)
{
if(MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=cos(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其cos值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
void CMyDlg::OnTan()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate)
{
if(MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=tan(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其tan值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
void CMyDlg::OnSqrt()
{
// TODO: Add your control notification handler code here
if( m_CommonCalculate)
{
if(MessageBox("对不起,在日常运算里面不能进行科学运算!要改变你的运算类型吗?","错误提示",\
MB_ICONINFORMATION|MB_YESNO|MB_DEFBUTTON2)==IDNO)
{
MessageBox("请重新击入你的运算符!\t","运算符重新击入提示",\
MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
return;
}
}
m_Number2.EnableWindow(FALSE);
m_result=atof((LPCTSTR)m_str1);
m_result=sqrt(m_result);
_gcvt(m_result,20,m_str1);
m_Symbol.SetWindowText ("求其平方根值为");
int i=0;
while(m_str1[i])
i++;
if(Fflag)
{
m_str1[i]='0';
m_str1[i+1]=NULL;
}
else
m_str1[i-1]=NULL;
m_Result=(LPCTSTR)m_str1;
UpdateData(FALSE);
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//浮点标志设置的映射处理函数
void CMyDlg::OnFflagSet()
{
// TODO: Add your command handler code here
Fflag=TRUE;
m_DataType.SetSel(0,-1);
m_DataType.ReplaceSel("浮点数据");
UpdateData(FALSE);
}
void CMyDlg::OnFflagChange()
{
// TODO: Add your command handler code here
Fflag=FALSE;
m_DataType.SetSel(0,-1);
m_DataType.ReplaceSel("整形数据");
UpdateData(FALSE);
}
/////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
//帮助部分的所有功能提示
void CMyDlg::OnNumberIntro()
{
// TODO: Add your command handler code here
MessageBox("点击0—9这十个数字来进行数据的键入!\n\n明白吗?","数字键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnDailSymbolItro()
{
// TODO: Add your command handler code here
MessageBox("点击+或者-或者*或者/这几个日常运算符来进行运算的选择!\n\n明白吗?","日常运算符键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnComSymbolItro()
{
// TODO: Add your command handler code here
MessageBox("点击这几个科学运算符来进行运算的选择!他们只在设置了运算类型为科学运算时才可用!\n\n明白吗?","科学运算符键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnProcessItro()
{
// TODO: Add your command handler code here
MessageBox("点击等号来进行运算!\n\n明白吗?","等号键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnContinueKeyItro()
{
// TODO: Add your command handler code here
MessageBox("点击这几个键来进行是否继续运算的选择!\n\n你可以在此基础上继续输入新的数据,也可直接进行运算\n\n明白吗?","继续键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnClearKeyItro()
{
// TODO: Add your command handler code here
MessageBox("点击这个键来进行清零操作!他将计算器上所显示的所有数据都清除掉!\n\n明白吗?","清零键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnDeleKeyItro()
{
// TODO: Add your command handler code here
MessageBox("点击这几个科学运算符来进行删除操作!\n\n\n\n他有两种模式,第一种是每次只删去一个数字,这是系统默认的;\n\n第二种是每次将你输入的整个数据都删去!\n\n明白吗?","科学运算符键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
void CMyDlg::OnInputItro()
{
// TODO: Add your command handler code here
MessageBox("本计算器可以支持完全的鼠标点击输入,对于数据的输入也可以采用键盘!\n\n明白吗?","退出键介绍",MB_ICONQUESTION|MB_OK|MB_DEFBUTTON1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -