还剩2页未读,继续阅读
文本内容:
六、源程序清单、测试数据、结果主要代码//上9与0的消息响应函数相同,如下void CCaculatorDlg::0nButton0//TODO:Add yourcontrol notificationhandler codeherem StrBegin=m StrBegin+〃O〃;if!m_IsCheckPoint m DspEdit.OnDisplaym_StrBegin+〃・〃;else m DspEdit.OnDisplaym_StrBegin;〃清除显示框中内容void CCaculatorDlg::OnButtonClr//TODO:Add yourcontrol notificationhandler codehere m_IsCheckPoint二false;m_StrBegin二〃〃;m begin=
0.0;m end=
0.0;m_bit=0;m_DspEdit.OnDisplay/z
0.z,;〃实现“+”运算,“-、*、/、平方、开方”等运算的消息函数大体相同void CCaculatorDlg::OnButtonPlus//TODO:Add yourcontrol notificationhandler codehere Result;m bit=1;〃核心函数实现按钮到显示功能的中间计算过程Void CCaculatorDlg::Result〃用来处理按下符号键时的函数,是计算的核心函数switchm bitif m_begin==0case1:〃处理+号mend+=mbegin;break;m DspEdit.OnDisplay〃除数不能为case2:〃处理一号零!”;m_end-二m_begin;break;return;case3:〃处理*号,即乘法m_end*=m_begin;break;m_end/-m_begin;case4:〃处理/号,即除法break;case5:〃处理sqrt号,即开方if m_end0m IsCheckPoint=false;m begin=atof m StrBegin;〃将字符串转化为浮点数,确保精度m_end=powm_end,m_begin;break;m DspEdit.OnDisplay〃函数输入case14:〃处理Exp号,即求e的x次方m_end无效!〃;=exp m end;return;break;case15:〃处理In号if m end=0m DspEdit.OnDisplay〃函数输入无m_end二sqrt m_end;break;效!〃;case6:〃处理1/x号,即求倒数m_end=return;}l/m_end;m_end=logm_end;case7:〃处理二号break;break;case8:〃处理sin号m_end=sinm_end;case16://处理log号ifm_end=0break;m_DspEdit.OnDisplay〃函数输入无case9:〃处理cos号m_end=cosm_end;效!”;break;case10://处理tan号m_end=tan m_end;return;}break;mend=loglOm end;break;case11:〃处理12号,即平方mend=mend*mend;default://break;mend=mbegin;break;case12:〃处理匚3号,即立方mend=m_end*ni_end*ni_end;break;case13:〃处理/y号,即求x的y次方mbegin=
0.0;mb it=0;mStrBegin=int i=sprintf mbuffer,〃%
10.12f〃,mend;〃将结果转换为字符串TrimZerom_buffer,i;〃去掉字符串尾部多余的零mDspEdit.OnDisplaym buffer;〃实现简单和扩展计算器的切换功能void CCaculatorDlg::0nExtend{〃功能拓展按钮//TODO:Add yourcommand handler code hereCRectrect;if!m_IsExtend{SetWindowPosfewndTop,0,0,oldrect.Width,oldrect.Height,SWP_NOMOVE|SWP_NOZORDER;mDspEdit.GetWindowRectrect;m_DspEdit.SetWindowPosNULL,rect.left,rect.top,361,rect.Height,SWP_NOMOVE|SWP_NOZORDER;m_DspStatic.GetWindowRectrect;m DspStatic.SetWindowPosNULL,rect.left,rect.top,381,rect.Height,SWP NOMOVE|SWP NOZORDER;m_Menu-ModifyMenu ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,〃标准〃;m_IsExtend=TRUE;else{SetWindowPoswndTop,0,0,newrect.Width,newrect.Height,SWP_NOMOVE|SWP_NOZORDER;m_DspEdit.GetWindowRectrect;m_DspEdit.SetWindowPosNULL,rect.left,rect.top,182,rect.Height,SWP_N0M0VE|SWP_N0Z0RDER;m DspStatic.GetWindowRectrect;m DspStatic.SetWindowPosNULL,rect.left,rect.top,202,rect.Height,SWP NOMOVE|SWP NOZORDER;m Menu-ModifyMenu ID_EXTEND,MF BYCOMMAND|MF STRING,ID EXTEND,〃扩展〃;m_IsExtend=FALSE;void CCaculatorDlg::0nButtonDot{〃小数点的处理//TODO:Add yourcontrol notificationhandlercodehere ifImlsCheckPointmStrBegin!=〃〃mStrBegin=mStrBegin+〃.〃;m_DspEdit.OnDisplaym_StrBegin;mlsCheckPoint=true;1J测试结果标准界面拓展界面:之Caculat or。
个人认证
优秀文档
获得点赞 0