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

📄 我的计算器 dlg.cpp

📁 用于完成一些基本的日常生活运算工作,可用于新手入门时的参考
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -