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

📄 calculatordlg.cpp

📁 一个用VC写的计算器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=10;
}

void CCalculatorDlg::On22() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=11;
}

void CCalculatorDlg::On23() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=12;
}

void CCalculatorDlg::On24() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=13;
}

void CCalculatorDlg::On25() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=14;
}

void CCalculatorDlg::On26() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=15;
}

void CCalculatorDlg::On27() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=16;
}

void CCalculatorDlg::On3() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"3";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On4() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"4";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On5() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"5";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On6() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"6";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On7() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"7";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On8() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"8";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}

void CCalculatorDlg::On9() 
{
	// TODO: Add your control notification handler code here
		m_StrBegin=m_StrBegin+"9";

	if(!m_IsCheckPoint)//如果小数点按下了
		 m_DspEdit.OnDisplay(m_StrBegin+".");
	else//如果小数点没有按下
		m_DspEdit.OnDisplay(m_StrBegin);
}
int CCalculatorDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if(CDialog::OnCreate(lpCreateStruct)==-1)
		return -1;
	CRect rect;
	GetWindowRect(&rect);

	SetWindowPos(&wndTop,0,0,282,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);
	//TODO:Add your specialized creation code here
	return 0;
}
void CCalculatorDlg::OnExtend()
{
	CRect rect;
	if(m_IsExtend)
	{
		GetWindowRect(&rect);
		SetWindowPos(&wndTop,0,0,292,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);


		m_DspEdit.GetWindowRect(&rect);
		m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,221,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);


		m_DspStatic.GetWindowRect(&rect);
        m_DspStatic.SetWindowPos(NULL,rect.left,rect.top,221,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

		m_Menu->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"扩展");
		m_IsExtend=FALSE;
	}
	else
	{
       GetWindowRect(&rect);
       SetWindowPos(&wndTop,0,0,510,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);


       m_DspEdit.GetWindowRect(&rect);
	   m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,401,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

       m_DspStatic.GetWindowRect(&rect);
       m_DspStatic.SetWindowPos(NULL,rect.left,rect.top,441,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);       
	   m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,441,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

	   
	   m_Menu->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"标准");
	   m_IsExtend=TRUE;         
	   }
}
void CCalculatorDlg::OnOK()
{
	//TODO:Add extra validation here
	CDialog::OnOK();
}



void CCalculatorDlg::Result()
{   
	
	m_IsCheckPoint=false;
	m_begin=atof(m_StrBegin);

	switch(m_bit){
	case 1:
		m_end+=m_begin;
		break;
	case 2:
		m_end-=m_begin;
		break;
	case 3:
		m_end*=m_begin;
		break;
	case 4:
		if(m_begin==0)
		{
			m_DspEdit.OnDisplay("除数不能为零");
			return;
		}
		m_end/=m_begin;
		break;
	case 5:
		if(m_end<0)
		{
			m_DspEdit.OnDisplay("函数输入无效!");
			return;
		}
		m_end=sqrt(m_end);
        break;
	case 6:
		if(m_end==0)
		{
			m_DspEdit.OnDisplay("分母输入无效!");
		    return;
		}
		m_end=1/m_end;
		break;
	case 7:
		break;
	case 8:
		m_end=sin(convertToH(m_end));
		break;
	case 9:
		m_end=cos(convertToH(m_end));
		break;
	case 10:
		m_end=tan(convertToH(m_end));
		break;
	case 11:
		m_end=m_end*m_end;
		break;
	case 12:
		m_end=m_end*m_end*m_end;
		break;
	case 13:
		m_end=pow(m_end,m_begin);
		break;
	case 14:
		m_end=exp(m_end);
		break;
	case 15:
		if(m_end<=0)
		{
		   m_DspEdit.OnDisplay("函数输入无效!");
            return;
		}
		m_end=log(m_end);
		break;
	case 16:
		if(m_end<=0)
		{
			m_DspEdit.OnDisplay("函数输入无效!");
			return;
		}
		m_end=log10(m_end);
		break;
	case 17:
		m_end=m_end*-1;
		break;
	case 18:
		int j;
		for(j=m_end-1;j>=1;j--)
		m_end*=j;
		break;
	case 19:
		m_end=pow(10,m_end);
		break;
	default:
		m_end=m_begin;
		break;
	}


	m_begin=0.0;
	m_bit=0;
	m_StrBegin="";

	int i=sprintf(m_buffer,"%10.12f",m_end);

	TZero(m_buffer,i);

	m_DspEdit.OnDisplay(m_buffer);
}
void CCalculatorDlg::TZero(char *pStr,int iLen)//用于去掉字符串尾部多余的零。
{
	char * p = &pStr[iLen-1];

	while (1) {
		if( *p != '0') break;
		* p -- =0;
	}
}


void CCalculatorDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}





void CCalculatorDlg::OnZOF() 
{
	// TODO: Add your control notification handler code here
    Result();
	m_bit=17;
}

void CCalculatorDlg::OnN() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=18;
}

void CCalculatorDlg::On10X() 
{
	// TODO: Add your control notification handler code here
	Result();
	m_bit=19;
}
float CCalculatorDlg::convertToH(float w)
{
	float c;
	c=w*YUANZHOU/180;
	return c;
}

void CCalculatorDlg::OnABOUT() 
{
	// TODO: Add your control notification handler code here
	MessageBox(" 王珍 23020051204438");	
}

void CCalculatorDlg::OnHex() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnOct() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnRad() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnDec() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnBin() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnDegree() 
{
	// TODO: Add your control notification handler code here
	
}

void CCalculatorDlg::OnTidu() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -