MFC计算器最简单版本(我的计算器1.1,和同学交流的结果)

第一天,看了好多别人的,发现代码好多,有点晕,这个不会,只是不能简单计算,但是交作业是够了,要想深究,我下一篇博客是这个的改良版。上一篇是另一种方式。
效果还是有的,用到的函数很少,简单化,不需要设置控键相关的
在这里插入图片描述
一.代码区:
在打控键代码前,设置3个变量

double num1=0.0;
double num2=0.0;
double result = 0.0; int opt=0;

0-9的代码:参考下列改动:

void CMFCApplication10Dlg::OnBnClickedButton1()
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	SetDlgItemText(IDC_EDIT1,cs+_T("1"));

}

功能键:
+:

void CMFCApplication10Dlg::OnBnClickedButton13()//+
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs);//_tstoi(cs);
	opt = 1; //"+";
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

-:

void CMFCApplication10Dlg::OnBnClickedButton14()//-
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs);//_tstoi(cs);
	opt = 2; //"-";
	SetDlgItemText(IDC_EDIT1, _T(" "));
}
void CMFCApplication10Dlg::OnBnClickedButton15()//  *
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _wtof(cs);//_tstoi(cs);
	opt = 3;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

/:

void CMFCApplication10Dlg::OnBnClickedButton16()//   /
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs);//_tstoi(cs);
	opt = 4;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

后退:

void CMFCApplication10Dlg::OnBnClickedButton10()//后退
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	cs.Delete(cs.GetLength() - 1);
	SetDlgItemText(IDC_EDIT1, cs);
}

清零:

void CMFCApplication10Dlg::OnBnClickedButton18()// AC 全清
{
	CString cs;
	num1 = 0.0; num2 = 0.0; result = 0.0;
    SetDlgItemText(IDC_EDIT1, _T(" "));
	UpdateData(false);
}

小数点:

void CMFCApplication10Dlg::OnBnClickedButton12()//小数点
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs);
	if (cs.Find(_T(".")) == -1) {
		SetDlgItemText(IDC_EDIT1, cs + _T("."));
	}
	opt = 8;
	cs.Format(_T("%d"), num1);
}
void CMFCApplication10Dlg::OnBnClickedButton2pingfang()//平方
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs); opt = 5;
	double f = pow(num1,2);
	//如果浮点数其实是个整数,就显示为整数
	if (f - int(f) <= 1e-5)
	{
		cs.Format(L"%d", (int)f);
	}
	else
	{
		cs.Format(L"%f", f);
	}
	//SetDlgItemText(IDC_EDIT1, _T(" "));
	num1 = f;
	num2 = 0.0f;
}

开方:

void CMFCApplication10Dlg::OnBnClickedButtonkaifang()//开方
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs); opt = 5;
	double f = sqrt(num1);
	//如果浮点数其实是个整数,就显示为整数
	if (f - int(f) <= 1e-5)
	{
		cs.Format(L"%d", (int)f);
	}
	else
	{
		cs.Format(L"%f", f);
	}
	//SetDlgItemText(IDC_EDIT1, _T(" "));
	num1 = f;
	num2 = 0.0f;
	
}

Π:

void CMFCApplication10Dlg::OnBnClickedButton20()//pai
{
	
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	SetDlgItemText(IDC_EDIT1, cs + _T("3.14159265359"));
}

关于:

void CMFCApplication10Dlg::OnBnClickedButtonabout()//关于
{
	// TODO: 在此添加控件通知处理程序代码
	CAboutDlg dlg;
	dlg.DoModal();
}

^:

void CMFCApplication10Dlg::OnBnClickedButtonncifang()//^
{
	// TODO: 在此添加控件通知处理程序代码

	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs); opt = 6;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

%:

void CMFCApplication10Dlg::OnBnClickedButton19()//%
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs); opt = 7;
	
}

开几次方:

void CMFCApplication10Dlg::OnBnClickedButton22()//开几次方
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num1 = _ttof(cs); opt = 10;
	SetDlgItemText(IDC_EDIT1, _T(""));
}

log:

void CMFCApplication10Dlg::OnBnClickedButton23()//log
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); double num;
	num1 = _ttof(cs); opt = 5; num = log10(num1); num1 = num;
	SetDlgItemText(IDC_EDIT1, _T(" "));

}

ln:

void CMFCApplication10Dlg::OnBnClickedButton25()// ln
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); double num;
	num1 = _ttof(cs); opt = 5; num = log(num1); num1 = num;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

e^n:

void CMFCApplication10Dlg::OnBnClickedButton24()//e^n
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); double num;
	num1 = _ttof(cs); opt = 5; num = exp(num1); num1 = num;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

sin:

void CMFCApplication10Dlg::OnBnClickedButton27()//sin
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); double num;
	num1 = _ttof(cs); opt = 5; num = (num1*3.1415926)/180; num1 = sin(num);
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

cos:

void CMFCApplication10Dlg::OnBnClickedButton28()//cos 
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); double num;
	num1 = _ttof(cs); opt = 5; num = (num1*3.1415926) / 180; num1 = cos(num);
	SetDlgItemText(IDC_EDIT1, _T(" "));
}

n!:

void CMFCApplication10Dlg::OnBnClickedButton26()// n!
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs); 
	num1 = _ttof(cs); double  num=1;
	for (int i = 1; i <= num1; i++)
		num *= i; 
	num1 = num;
	opt = 5;
	SetDlgItemText(IDC_EDIT1, _T(" "));
}
void CMFCApplication10Dlg::OnBnClickedButton17()//    =
{
	// TODO: 在此添加控件通知处理程序代码
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	num2 = _ttof(cs);
	
		switch (opt)
		{
		case 1: { result = num1 + num2;  break; }
		case 2:result = num1 - num2;  break;
		case 3:result = num1 * num2; break;
		case 4:if (num2 == 0) {
			result = num1;
			MessageBox(_T("输入无效!"));
		}
			   else {
			result = num1 / num2;  
		}
			 break;
		case 5:result = num1; break;
		case 6: {
			double f = pow(num1, num2);
			//如果浮点数其实是个整数,就显示为整数
			if (f - int(f) <= 1e-5)
			{
				cs.Format(L"%d", (int)f);
			}
			else
			{
				cs.Format(L"%f", f);
			}
			//SetDlgItemText(IDC_EDIT1, _T(" "));
			num1 = f;
			num2 = 0.0f;
			result = num1;
		}     break;
		case 7: result = num1 / 100;   break;
		case 8:
			result = num2; 
		case 9:
			result = num1; 
			break;
		case 10:
			result = pow(num1, 1 / num2); 
		default:break;
		}
		num1 = result; num2 = 0; 
	
	if (result - int(result) <= 1e-5)
	{
		cs.Format(L"%d", (int)result);
	}
	else
	{
		cs.Format(_T(" = %f"), result);
	}

	SetDlgItemText(IDC_EDIT1, cs);

  
	num1 = 0;
	num2 = 0; result =0.0;
	}
	
退出键:
删掉确定键,把取消键名换成退出键名
分析:代码多,功能多,主要函数:
1.  CString cs;
	GetDlgItemText(IDC_EDIT1, cs); 
	num1 = _ttof(cs); double  num=1;
	SetDlgItemText(IDC_EDIT1, _T(" "));
	中的GetDlgItemText()SetDlgItemText()
	原型:
*1*int GetDlgItemText( HWND hDlg , int nID, LPTSTR lpStr, int nMaxCount) const;

*2*int GetDlgItemText( int nID, CString& rString) const;
     分析函数结构:
GetDlgItemText 函数 用于获取对话框中指定控件的标题或文本。  

UINT GetDlgItemText(HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount);

hDlg 窗口的句柄。

nIDDlgItem   指定控件的标识符(ID)。 

lpString   指向用于接收获取结果的缓冲区的指针。   

nMaxCount   指定允许拷贝到上述缓冲中的最大字符数(按 TCHAR 字符类型),如果字符串的长度(包含结束空字符)大于指定的最大字符数,则会被截断。

返回值  

如果函数调用成功,返回值为拷贝到缓冲区中的 TCHAR 字符个数(不包括结束空字符)。  

如果函数调用失败,返回值为 0 。要获取更多错误信息,请调用 GetLastError 函数。

说明  如果字符串的长度大于缓冲区的长度,则会被截断,并以空字符结束。GetDlgItemText 函数向控件发送一条 WM_GETTEXT 消息。在 ANSI 版本中,长度指的是字节数,在 Unicode 版本中,长度指的是字符的个数。

系统要求

 动态链接库:user32.dll

头文件:在Winuser.h中定义,需包含Windows.h文件   

库文件:User32.lib  

GetDlgItemInt(int nID,BOOL *lpTrans=NULL,BOOL bSigned=TRUE)
第一个参数nID是控件的ID,
第二个参数,主要是为了接收错误信息

可能出现的错误信息有: ID无效,并且超过指定大小,比如说:ID为12345677,这个就不行.
还有就是输入不能解析为一个int类型的,比如输入:"bvbvbvbv","3.5666",
当然后面可以解析为一个浮点型,在这里取得的值为3,但是还是会有错误信息
如果不指定第二个参数,就不会获得任何错误信息,这个参数很有用的,对输入的判断是否可以解析为int类型或者是否有效,很有用的,我们经常有这个参数来判断用户的输入是否合法

参数3:默认的为true,主要是针对"-123",像这样的字符,它可以把前面的"-"解析为负号,那么就是标准的int类型了,如果设置为false,那么它不可以有
负数,因为在这里的"-",被认为是不合法的

用途如下:

        BOOL flag;

UINT ui=GetDlgItemInt(IDC_EDIT1,&flag,true);

CString cs;

cs.Format("%d,%d",ui,flag);

MessageBox(cs);
(来自https://blog.csdn.net/zacklin/article/details/7454735*3*BOOLSetDlgltemText(HWND hDlg,int nlDDlgltem,LPCTSTR IpString);
参数编辑

hDlg:指定含有控件的对话框。
nlDDlgltem:标识带有将被设置的标题和文本的控件。
IpString:指向一个以NULL结尾的字符串指针,该字符串指针包含了将被复制到控件的文本。
返回值:如果函数调用成功,则返回值为非零值。如果函数调用失败,则返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
使用例子编辑
CTime ctime=CTime::GetCurrentTime(); //得到当前系统时间
CString strTime=time.Format("%H:%M:%S");
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,strTime); //送到指定控件
在vc6.0以后的版本中不支持AfxGetMainWnd()->m_hWnd来获取HWND,所以需要把这一句改为:
SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_TIME, strTime);
在VS中需要去掉第一个参数,直接SetDlgItemText(IDC_TIME, strTime);
备注:SetDlgltem函数把一个WM_SETTEXT消息发送到指定的控件。
(来自百度百科https://baike.baidu.com/item/SetDlgItemText/1856099?fr=aladdin)

	2.cs.Format(L"%d", (int)f);    num2 = _ttof(cs);类型转换,可以看我前2篇,有详解
	3.num = exp(num1); 为e^n计算函数
	

后改进的版本:

MFC简单计算器(我的实验报告1.2版本)
简单MFC计算器(字符串形式,基于vs2017 我的实验报告版本1.3)

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
课程设计:简易计算器,逻辑运算 功能代码: // 计算器1Dlg.cpp : implementation file // #include "stdafx.h" #include "计算器1.h" #include "计算器1Dlg.h" #include<cmath> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About int focus=0,point1=0,point2=0,i=0,j=0; double temp1=1,temp2=1,equal; double temp3[100],temp4[100]; class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMy1Dlg dialog CMy1Dlg::CMy1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CMy1Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CMy1Dlg) m_1 = 0.0; m_2 = 0.0; m_result = 0.0; m_string = _T(""); m_string2 = _T(""); m_string3 = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMy1Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMy1Dlg) DDX_Control(pDX, IDC_BUTTON_point, m_point); DDX_Text(pDX, IDC_EDIT1, m_1); DDX_Text(pDX, IDC_EDIT2, m_2); DDX_Text(pDX, IDC_EDIT3, m_result); DDX_Text(pDX, IDC_EDIT4, m_string); DDX_Text(pDX, IDC_EDIT5, m_string2); DDX_Text(pDX, IDC_EDIT7, m_string3); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMy1Dlg, CDialog) //{{AFX_MSG_MAP(CMy1Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1) ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1) ON_EN_SETFOCUS(IDC_EDIT2, OnSetfocusEdit2) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON_point, OnBUTTONpoint) ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_BN_CLICKED(IDC_BUTTON7, OnButton7) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) ON_BN_CLICKED(IDC_BUTTON9, OnButton9) ON_BN_CLICKED(IDC_BUTTON0, OnButton0) ON_BN_CLICKED(IDC_BUTTON_delete, OnBUTTONdelete) ON_BN_CLICKED(IDC_BUTTON_equal, OnBUTTONequal) ON_BN_CLICKED(IDC_BUTTON15, OnButton15) ON_BN_CLICKED(IDC_BUTTON16, OnButton16) ON_BN_CLICKED(IDC_BUTTON17, OnButton17) ON_BN_CLICKED(IDC_BUTTON18, OnButton18) ON_BN_CLICKED(IDC_BUTTON19, OnButton19) ON_BN_CLICKED(IDC_BUTTON20, OnButton20) ON_BN_CLICKED(IDC_BUTTON21, OnButton21) ON_BN_CLICKED(IDC_BUTTON22, OnButton22) ON_BN_CLICKED(IDC_BUTTON23, OnButton23) ON_BN_CLICKED(IDC_BUTTON24, OnButton24) ON_BN_CLICKED(IDC_BUTTON25, OnButton25) ON_BN_CLICKED(IDC_BUTTON27, OnButton27) ON_BN_CLICKED(IDC_BUTTON28, OnButton28) ON_BN_CLICKED(IDC_BUTTON29, OnButton29) ON_BN_CLICKED(IDC_BUTTON26, OnButton26) ON_BN_CLICKED(IDC_BUTTON30, OnButton30) ON_BN_CLICKED(IDC_BUTTON31, OnButton31) ON_BN_CLICKED(IDC_BUTTON32, OnButton32) ON_BN_CLICKED(IDC_BUTTON10, OnButton10) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_COMMAND(ID_MENUITEM32792, OnMenuitem32792) ON_COMMAND(ID_MENUITEM32793, OnMenuitem32793) ON_COMMAND(ID_MENUITEM32794, OnMenuitem32794) ON_COMMAND(ID_MENUITEM32795, OnMenuitem32795) ON_COMMAND(ID_MENUITEM32796, OnMenuitem32796) ON_COMMAND(ID_MENUITEM32797, OnMenuitem32797) ON_COMMAND(ID_MENUITEM32798, OnMenuitem32798) ON_COMMAND(ID_MENUITEM32799, OnMenuitem32799) ON_COMMAND(ID_MENUITEM32800, OnMenuitem32800) ON_COMMAND(ID_MENUITEM32801, OnMenuitem32801) ON_COMMAND(ID_MENUITEM32802, OnMenuitem32802) ON_COMMAND(ID_MENUITEM32791, OnMenuitem32791) ON_COMMAND(ID_MENUITEM32790, OnMenuitem32790) ON_COMMAND(ID_MENUITEM32789, OnMenuitem32789) ON_COMMAND(ID_MENUITEM32788, OnMenuitem32788) ON_COMMAND(ID_MENUITEM32803, OnMenuitem32803) ON_COMMAND(ID_MENUITEM32804, OnMenuitem32804) ON_BN_CLICKED(IDC_BUTTON33, OnButton33) ON_BN_CLICKED(IDC_BUTTON14, OnButton14) ON_COMMAND(ID_MENUITEM32809, OnMenuitem32809) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMy1Dlg message handlers BOOL CMy1Dlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CMy1Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CMy1Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect;); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CMy1Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CMy1Dlg::OnSetfocusEdit1() { focus=1; } void CMy1Dlg::OnChangeEdit1() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here } void CMy1Dlg::OnSetfocusEdit2() { focus=2; } void CMy1Dlg::OnBUTTONpoint() //--------------------------------------------------小数点键 { if(focus==1) point1=1; if(focus==2) point2=1; } void CMy1Dlg::OnChangeEdit2() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here } void CMy1Dlg::OnButton1() //-----------------------------------------------------数字键1 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+1; i++;temp3[i]=m_1;} if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1+m_1; i++;temp3[i]=m_1;point1++;} if(focus==2&&point2;==0) {m_2=m_2*10+1; j++;temp4[j]=m_2;} if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton2() //-----------------------------------------------------数字键2 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+2; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*2+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+2; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*2+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton3() //-----------------------------------------------------数字键3 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+3; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*3+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+3; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*3+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton4() //-----------------------------------------------------数字键4 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+4; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*4+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+4; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*4+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton5() //-----------------------------------------------------数字键5 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+5; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*5+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+5; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*5+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton6() //-----------------------------------------------------数字键6 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+6; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*6+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+6; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*6+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton7() //-----------------------------------------------------数字键7 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+7; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*7+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+7; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*7+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton8() //-----------------------------------------------------数字键8 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+8; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*8+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+8; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*8+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton9() //-----------------------------------------------------数字键9 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10+9; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*9+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10+9; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*9+m_2; j++;temp4[j]=m_2;point2++;} UpdateData(false); } void CMy1Dlg::OnButton0() //-----------------------------------------------------数字键0 {UpdateData(true); if(focus==1&&point1;==0) {m_1=m_1*10; i++;temp3[i]=m_1;} else if(focus==1&&point1;>=1) {temp1=temp1/10;m_1=temp1*0+m_1; i++;temp3[i]=m_1;point1++;} else if(focus==2&&point2;==0) {m_2=m_2*10; j++;temp4[j]=m_2;} else if(focus==2&&point2;>=1) {temp2=temp2/10;m_2=temp2*0+m_2; j++;temp4[j]=m_1;point2++;} UpdateData(false); } void CMy1Dlg::OnBUTTONdelete() //--------------------------------退格 {UpdateData(true); if(focus==1) {i--;m_1=temp3[i]; if(point1>0) {point1=point1-1;} if(temp1<1) {temp1=temp1*10;} } if(focus==2) {j--;m_2=temp4[j]; if(point2>0) {point2=point2-1;} if(temp2<1) {temp2=temp2*10;} } UpdateData(false); } void CMy1Dlg::OnBUTTONequal() {//--------------------------------------------------------------------等号键 UpdateData(true); m_result=equal; UpdateData(false); } void CMy1Dlg::OnButton14() { // TODO: Add your control notification handler code here------------- 加法 UpdateData(true); equal=m_1+m_2; m_string="+"; UpdateData(false); } void CMy1Dlg::OnButton15() { // TODO: Add your control notification handler code here-----------减法 UpdateData(true); equal=m_1-m_2; m_string="-"; UpdateData(false); } void CMy1Dlg::OnButton16() {// TODO: Add your control notification handler code here--------------乘法 UpdateData(true); equal=m_1*m_2; m_string="*"; UpdateData(false); } void CMy1Dlg::OnButton17() { // TODO: Add your control notification handler code here--------除法 UpdateData(true); equal=m_1/m_2; m_string="/"; UpdateData(false); } void CMy1Dlg::OnButton18() { // TODO: Add your control notification handler code here------------------逻辑与 UpdateData(true); equal=m_1&&m_2; m_string="And";m_string2=" "; UpdateData(false); } void CMy1Dlg::OnButton19() { // TODO: Add your control notification handler code here--------------逻辑或 UpdateData(true); equal=m_1||m_2; m_string="or"; m_string2=" "; UpdateData(false); } void CMy1Dlg::OnButton20() { // TODO: Add your control notification handler code here------------------逻辑非 UpdateData(true); equal=!m_1; m_string="not"; m_string2=" "; UpdateData(false); } void CMy1Dlg::OnButton21() { // TODO: Add your control notification handler code here---------------------逻辑异或 UpdateData(true); equal=int(m_1)^int(m_2); m_string="Xor"; m_string2=" "; UpdateData(false); } void CMy1Dlg::OnButton22() { // TODO: Add your control notification handler code here---------------------正弦 UpdateData(true); m_2=sin(m_1); m_string2="Sin";m_string="="; UpdateData(false); } void CMy1Dlg::OnButton23() { // TODO: Add your control notification handler code here----------------------余弦 UpdateData(true); m_2=cos(m_1); m_string2="Cos";m_string="="; UpdateData(false); } void CMy1Dlg::OnButton24() { // TODO: Add your control notification handler code here------------正切 UpdateData(true); m_2=tan(m_1); m_string2="tan";m_string="="; UpdateData(false); } void CMy1Dlg::OnButton25() { // TODO: Add your control notification handler code here----------------求余 UpdateData(true); equal=int(m_1)%int(m_2); m_string="Mod"; UpdateData(false); } void CMy1Dlg::OnButton27() { // TODO: Add your control notification handler code here------------------log UpdateData(true); m_result=log(m_2)/log(m_1); m_string2="log"; UpdateData(false); } void CMy1Dlg::OnButton28() { // TODO: Add your control notification handler code here--------------------ln UpdateData(true); m_2=log(m_1); m_string2="ln"; m_string="="; UpdateData(false); } void CMy1Dlg::OnButton29() { // TODO: Add your control notification handler code here-------------------乘方 UpdateData(true); equal=pow(m_1,m_2); m_string="^"; UpdateData(false); } void CMy1Dlg::OnButton26() { // TODO: Add your control notification handler code here----------------阶乘 UpdateData(true); int j=1,k=int(m_1); for(;j<m_1;j++) {k=k*j;} equal=k; m_2=equal; m_string="!="; UpdateData(false); } void CMy1Dlg::OnButton30() { // TODO: Add your control notification handler code here---------------pi if(focus==1) m_1=3.1415926; else if(focus==2) m_2=3.1415926; UpdateData(false); } void CMy1Dlg::OnButton31() { // TODO: Add your control notification handler code here-------------00 m_string3="00"; UpdateData(false); } void CMy1Dlg::OnButton32() { // TODO: Add your control notification handler code here-----------------%(百分号) m_string3="%"; UpdateData(false); } void CMy1Dlg::OnButton10() { // TODO: Add your control notification handler code here-------------------复原MR focus=0,point1=0,point2=0,i=0,j=0,temp1=1,temp2=1; m_1=0;m_2=0;m_result=0; m_string=" ";m_string2=" ";m_string3=" "; UpdateData(false); } void CMy1Dlg::OnRadio1() { // TODO: Add your control notification handler code here----------------十进制转二进制 int change(int); m_2=change(int(m_1)); m_string="--->"; UpdateData(false); } int change(int c) {int h[100],k=0,x=0; for(;c!=0;) {h[k]=c%2; c=c/2; k++; } k=k-1; for(;k>=0;k--) {x=x*10+h[k]; } return x; } void CMy1Dlg::OnRadio2() { // TODO: Add your control notification handler code here------------二进制转十进制(Two to Ten) int q,num=int(m_1),shi=0; int TtT(int); q=TtT(num); for(;num>1;) {num=num-pow(10,q); shi=pow(2,q)+shi; q=TtT(num); } if(num==1) shi=shi+1; m_2=shi; m_string="--->"; UpdateData(false); } int TtT(int m) {int k,j=0; double n; n=m; for(k=0;n>2;k++) {n=n/10;} if(m==1) k=0; return k; } void CMy1Dlg::OnMenuitem32792() //------------------------菜单。加 { // TODO: Add your command handler code here CMy1Dlg::OnButton14() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32793() //----------------------菜单。减 { // TODO: Add your command handler code here CMy1Dlg::OnButton15() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32794() { // TODO: Add your command handler code here//---------------菜单。乘 CMy1Dlg::OnButton16() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32795() //-------------------------------菜单。除 { // TODO: Add your command handler code here CMy1Dlg::OnButton17() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32796() //------------------------------菜单。与 { // TODO: Add your command handler code here CMy1Dlg::OnButton18() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32797() //------------------------------菜单。或 { // TODO: Add your command handler code here CMy1Dlg::OnButton19() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32798() //------------------------------菜单。非 { // TODO: Add your command handler code here CMy1Dlg::OnButton20() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32799() //------------------------------菜单。异或 { // TODO: Add your command handler code here CMy1Dlg::OnButton21() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32800() //-------------------------------菜单。正弦 { // TODO: Add your command handler code here CMy1Dlg::OnButton22() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32801() //-------------------------------菜单。余弦 { // TODO: Add your command handler code here CMy1Dlg::OnButton23() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32802() //-------------------------------菜单。正切 { // TODO: Add your command handler code here CMy1Dlg::OnButton24() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32791() //-------------------------------菜单。求余 { // TODO: Add your command handler code here CMy1Dlg::OnButton25() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32790() //---------------------------------菜单。阶乘 { // TODO: Add your command handler code here CMy1Dlg::OnButton26() ; CMy1Dlg::OnBUTTONequal(); } void CMy1Dlg::OnMenuitem32789() //--------------------------------菜单。复位 { // TODO: Add your command handler code here CMy1Dlg::OnButton10() ; } void CMy1Dlg::OnMenuitem32788() //---------------------------------菜单。退格 { // TODO: Add your command handler code here CMy1Dlg::OnBUTTONdelete(); } void CMy1Dlg::OnMenuitem32803() //----------------------------------菜单。十进制转二进制 { // TODO: Add your command handler code here CMy1Dlg::OnRadio1() ; } void CMy1Dlg::OnMenuitem32804() //---------------------------------菜单。二进制转十进制 { // TODO: Add your command handler code here CMy1Dlg::OnRadio2() ; } void CMy1Dlg::OnButton33() //--------------------------------------求倒数 { // TODO: Add your control notification handler code here UpdateData(true); m_2=1/m_1; m_string="->"; UpdateData(false); } void CMy1Dlg::OnMenuitem32809() //----------------------------------菜单求倒数 { // TODO: Add your command handler code here CMy1Dlg::OnButton33(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值