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

📄 calculatordlg.cpp

📁 vc计算器 有 二进制
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		else str.Format("%d",nTmp);
		nDecInt/=16;
		strExp->Insert(0,str);
	}
	*strExp+=".";
	if(pos!=-1)
	{
		dDec=StoN(strDec);
		int nCount=0;
		while(dDec!=0)
		{
			dDec*=16;
			int nTmp=(int)dDec;
			if(nTmp==10) str="a";
			else if(nTmp==11) str="b";
			else if(nTmp==12) str="c";
			else if(nTmp==13) str="d";
			else if(nTmp==14) str="e";
			else if(nTmp==15) str="f";
			else str.Format("%d",nTmp);
			*strExp+=str.Left(pos);
			dDec-=nTmp;
			if(++nCount==17) break;
		}
	}
	if(bMinus) strExp->Insert(0,"-");
	if(strExp->Find("-1")!=-1 && bMinus!=1) *strExp="太大无法表示";
}

void CCalculatorDlg::Dec2Oct(CString *strExp)
{
	bool bMinus=0;
	if(strExp->GetAt(0)=='-') 
	{
		bMinus=1;
		strExp->Delete(0);
	}
	int pos=strExp->Find('.');
	CString str,strDec;
	int nDecInt;
	double dDec;
	if(pos!=-1) 
	{
		strDec=strExp->Left(pos);
		nDecInt=atoi(strDec.GetBuffer(0));
		strDec=strExp->Right(strExp->GetLength()-pos);	
	}
	else 
	{
		nDecInt=atoi(strExp->GetBuffer(0));
	}
	strExp->Empty();
	while(nDecInt!=0)
	{
		int nTmp=nDecInt%8;
		str.Format("%d",nTmp);
		nDecInt/=8;
		strExp->Insert(0,str);
	}
	*strExp+=".";
	if(pos!=-1)
	{
		dDec=StoN(strDec);
		int nCount=0;
		while(dDec!=0)
		{
			dDec*=8;
			int nTmp=(int)dDec;
			str.Format("%d",nTmp);
			*strExp+=str.Left(pos);
			dDec-=nTmp;
			if(++nCount==17) break;
		}
	}
	if(bMinus) strExp->Insert(0,"-");
}

void CCalculatorDlg::Dec2Bin(CString *strExp)
{
	bool bMinus=0;
	if(strExp->GetAt(0)=='-') 
	{
		bMinus=1;
		strExp->Delete(0);
	}
	int pos=strExp->Find('.');
	CString str,strDec;
	_int64 nDecInt;
	double dDec;
	if(pos!=-1) 
	{
		strDec=strExp->Left(pos);
		if(strDec.Compare("4294967295")>0 && strDec.GetLength()>10 || strDec.GetLength()>10)
		{
			*strExp="太大无法转换";
			return;
		}
		nDecInt=atoi(strDec.GetBuffer(0));
		strDec=strExp->Right(strExp->GetLength()-pos);	
	}
	else 
	{
		if(strExp->Compare("4294967295")>0 && strExp->GetLength()>10 || strExp->GetLength()>10)
		{
			*strExp="太大无法转换";
			return;
		}
		nDecInt=atoi(strExp->GetBuffer(0));
	}
	strExp->Empty();
	while(nDecInt!=0)
	{
		_int64 nTmp=nDecInt%2;
		str.Format("%d",nTmp);
		nDecInt/=2;
		strExp->Insert(0,str);
	}
	*strExp+=".";
	if(pos!=-1)
	{
		dDec=StoN(strDec);
		int nCount=0;
		while(dDec!=0)
		{
			dDec*=2;
			int nTmp=(int)dDec;
			str.Format("%d",nTmp);
			*strExp+=str.Left(pos);
			dDec-=nTmp;
			if(++nCount==17) break;
		}
	}
	if(bMinus) strExp->Insert(0,"-");
}

void CCalculatorDlg::AddToHistr(CString strExp)
{
	if(m_menu2.m_hMenu)
	{
		int b=m_menu2.GetMenuItemCount();
		BOOL bRet=m_menu2.AppendMenu(MF_STRING,IMENU_ITEM_ID+b,strExp);
		if(bRet) m_menuItem.Add(strExp);
	}
}



void CCalculatorDlg::OnButtonOperate() 
{
	UpdateData(1);
	if(m_degree.GetCheck()==1)
		m_bDegree=1;
	else
		m_bDegree=0;
	CString strRes=MainPro(m_strExp);
	m_strRes=strRes;
	m_strResTmp=strRes;
	if(!m_strExp.IsEmpty())
		AddToHistr(m_strExp);
	UpdateData(0);	
}

void CCalculatorDlg::OnButtonClear() 
{
	UpdateData(1);
	m_strExp="";
	m_strRes="";
	m_strTmp="";
	UpdateData(0);
	Invalidate();
}

void CCalculatorDlg::OnButtonHistory() 
{
	CPoint point;
	GetCursorPos(&point);
	m_menu2.TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,this);	
}

void CCalculatorDlg::OnMenuSelect(UINT nID)
{
	int i=nID-IMENU_ITEM_ID;
	CString str=m_menuItem.GetAt(i);
	Paster(str,0);
}

void CCalculatorDlg::OnButtonConst() 
{
	UpdateData(1);
	CWnd * pFrame;					
	pFrame=AfxGetApp()->GetMainWnd();
	CWnd* pWndPopupOwner = this;
	VERIFY(m_menu.LoadMenu(IDR_MENU));
	CPoint point;
	GetCursorPos(&point);
	::SetForegroundWindow(m_hWnd); 
	CMenu* pPopup = m_menu.GetSubMenu(0);
	pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,pWndPopupOwner,NULL);
	m_menu.DestroyMenu();	
}

void CCalculatorDlg::OnRadioDec() 
{
	m_strRes=m_strResTmp;
	UpdateData(0);  	
}

void CCalculatorDlg::OnRadioHex() 
{
	if(m_strResTmp!="")
	{
		m_strRes=m_strResTmp;
		Dec2Hex(&m_strRes);
		if(m_strRes.Compare(".")==0)
			m_strRes=m_strResTmp;
		UpdateData(0); 
	}	
}

void CCalculatorDlg::OnRadioOct() 
{
	if(m_strResTmp!="")
	{
		m_strRes=m_strResTmp;
		Dec2Oct(&m_strRes);
		if(m_strRes.Compare(".")==0)
			m_strRes=m_strResTmp;
		UpdateData(0); 
	}	
}

void CCalculatorDlg::OnRadioBin() 
{
	if(m_strResTmp!="")
	{
		m_strRes=m_strResTmp;
		Dec2Bin(&m_strRes);
		if(m_strRes.Compare(".")==0)
			m_strRes=m_strResTmp;
		UpdateData(0);
	}	
}

void CCalculatorDlg::OnButtonSin() 
{
	Paster("sin(  )",1);
}

void CCalculatorDlg::OnButtonCos() 
{
	Paster("cos(  )",1);
}

void CCalculatorDlg::OnButtonTan() 
{
	Paster("tan(  )",1);
}

void CCalculatorDlg::OnButtonCot() 
{
	Paster("cot(  )",1);
}

void CCalculatorDlg::OnButtonSin1() 
{
	Paster("as(  )",1);
}

void CCalculatorDlg::OnButtonCos1() 
{
	Paster("ac(  )",1);
}

void CCalculatorDlg::OnButtonTan1() 
{
	Paster("at(  )",1);
}

void CCalculatorDlg::OnButtonLog() 
{

	Paster("long(  )",1);
}

void CCalculatorDlg::OnButtonSh() 
{
	Paster("sh(  )",1);
}

void CCalculatorDlg::OnButtonCh() 
{
	Paster("ch(  )",1);
}

void CCalculatorDlg::OnButtonTh() 
{
	Paster("th(  )",1);
}

void CCalculatorDlg::OnButtonExp() 
{
	Paster("exp(  )",1);
}

void CCalculatorDlg::OnButtonLn() 
{
	Paster("ln(  )",1);
}

void CCalculatorDlg::OnButtonEsqr() 
{

	Paster("e^(  )",1);
}

void CCalculatorDlg::OnButtonSqrt() 
{
	Paster("sqr(  )",1);
}

void CCalculatorDlg::OnButtonAbs() 
{
	Paster("abs(  )",1);
}

void CCalculatorDlg::OnButton7() 
{
	Paster("7",0);
}

void CCalculatorDlg::OnButton8() 
{
	Paster("8",0);
}

void CCalculatorDlg::OnButton9() 
{
	Paster("9",0);	
}

void CCalculatorDlg::OnButtonPlus() 
{
	Paster("+",0);	
}

void CCalculatorDlg::OnButtonBack() 
{
		Paster("",0);
		m_strExpc.GetSel(m_nStart,m_nEnd);
		m_strExp.Delete(m_nStart-1);
		m_strExpc.SetFocus();
		m_strExpc.SetSel(m_nStart-1,m_nStart-1);	
}

void CCalculatorDlg::OnButtonSqr() 
{
	Paster("^",0);	
}

void CCalculatorDlg::OnButton4() 
{
	Paster("4",0);	
}

void CCalculatorDlg::OnButton5() 
{
	Paster("5",0);	
}

void CCalculatorDlg::OnButton6() 
{
	Paster("6",0);	
}

void CCalculatorDlg::OnButtonMinus() 
{
	Paster("-",0);	
}

void CCalculatorDlg::OnButtonLparen() 
{
	Paster("(",0);	
}

void CCalculatorDlg::OnButtonXb() 
{
	Paster("xb",0);	
}

void CCalculatorDlg::OnButton1() 
{
	Paster("1",0);	
}

void CCalculatorDlg::OnButton2() 
{
	Paster("2",0);	
}

void CCalculatorDlg::OnButton3() 
{
	Paster("3",0);	
}

void CCalculatorDlg::OnButtonMul() 
{
	Paster("*",0);	
}

void CCalculatorDlg::OnButtonRparen() 
{
	Paster(")",0);	
}

void CCalculatorDlg::OnButtonXo() 
{
	Paster("xo",0);	
}

void CCalculatorDlg::OnButton0() 
{
	Paster("0",0);	
}

void CCalculatorDlg::OnButtonDot() 
{
	Paster(".",0);	
}

void CCalculatorDlg::OnButtonSpace() 
{
	Paster(" ",0);	
}

void CCalculatorDlg::OnButtonDivid() 
{
	Paster("/",0);	
}

void CCalculatorDlg::OnButtonMod() 
{
	Paster("%",0);	
}

void CCalculatorDlg::OnButtonXh() 
{
	Paster("xh",0);	
}

void CCalculatorDlg::OnButtonA() 
{
	Paster("A",0);	
}

void CCalculatorDlg::OnButtonB() 
{
	Paster("B",0);	
}

void CCalculatorDlg::OnButtonC() 
{
	Paster("C",0);	
}

void CCalculatorDlg::OnButtonD() 
{
	Paster("D",0);	
}

void CCalculatorDlg::OnButtonE() 
{
	Paster("E",0);	
}

void CCalculatorDlg::OnButtonF() 
{
	Paster("F",0);	
}

void CCalculatorDlg::OnMenuC() 
{
	Paster("LS",0);
}

void CCalculatorDlg::OnMenuE() 
{	
	Paster("E",0);	
}

void CCalculatorDlg::OnMenuE0() 
{
	Paster("DC",0);
}

void CCalculatorDlg::OnMenuG() 
{	
	Paster("GR",0);	
}

void CCalculatorDlg::OnMenuK() 
{
	Paster("BC",0);
}

void CCalculatorDlg::OnMenuKe() 
{	
	Paster("EF",0);	
}

void CCalculatorDlg::OnMenuNa() 
{
	Paster("NA",0);	
}

void CCalculatorDlg::OnMenuPi() 
{
	Paster("PI",0);
}

void CCalculatorDlg::OnMenuR() 
{
	Paster("MG",0);
}

void CCalculatorDlg::OnMenuVm() 
{
	Paster("VM",0);	
}

void CCalculatorDlg::OnRadioStandard() 
{
	SetWindowPos(NULL,0,0,smallCrect.Width(),largeCrect.Height(),
		SWP_NOMOVE | SWP_NOZORDER);		
}

void CCalculatorDlg::OnRadioScientfic() 
{
	SetWindowPos(NULL,0,0,largeCrect.Width(),largeCrect.Height(),
		SWP_NOMOVE | SWP_NOZORDER);		
}

⌨️ 快捷键说明

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