1、3)设计按钮,并修改其相应的ID与Caption.4)选择和设置各控件的单击鼠标事件。5)为编辑框添加double类型的关联变量m_edit1.6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码。(3)程序清单:添加的public成员: double tempvalue; /存储中间变量 double result; /存储显示结果的值 int sort; int append; /判断后面是否添加数字成员初始化:CCalculatorDlg:CCalcu
2、latorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg:IDD, pParent) /AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0;各控件响应函数
3、代码:void CCalculatorDlg:OnButton1() /按钮“1” / TODO: Add your control notification handler code here if(append=1)result=0; result=result*10+1; m_edit1=result; UpdateData(FALSE);OnButton2() /按钮“2” result=result*10+2;OnButton3() /按钮“3” result=result*10+3;OnButton4() /按钮“4” result=result*10+4;OnButton5()
4、/按钮“5” result=result*10+5;OnButton6() /按钮“6” result=result*10+6;OnButton7() /按钮“7” result=result*10+7;OnButton8() /按钮“8” result=result*10+8;OnButton9() /按钮“9” result=result*10+9;OnBUTTONzero() /按钮“0” result=result*10+0;OnBUTTONequal() /按钮“=” switch(sort) case 1:result=result+tempvalue;break; case 2:
5、result=tempvalue-result; case 3:result=result*tempvalue; case 4:result=tempvalue/result; append=1;OnBUTTONclean() /按钮“C” m_edit1=0.0;OnBUTTONplus() /按钮“+” sort=1; tempvalue=result; m_edit1=0;OnBUTTONminus() /按钮“-” sort=2;OnBUTTONmulti() /按钮“*” sort=3;OnBUTTONdiv() /按钮“/” sort=4;OnRadio1() /按钮“Sin” m
6、_edit1=sin(result);OnRadio2() /按钮“Cos” m_edit1=cos(result);OnRadio3() /按钮“Tan” m_edit1=tan(result);OnRadio4() /按钮“Log10” m_edit1=log10(result);(4)程序调试:简单计算器:测试与思考:5.小结:A.在做上面那个简单计算器的时候,遇到的问题很少,而且差不多都是些很小的问题,很容易就解决了B.刚开始,在老师没讲课之前,不知道如何设置响应事件,经老师讲解后,很快就解决了C.在运行的调试的时候,发现计算器的减法与除法的功能出错,原来是减数与被减数、除数与被除数的
7、位置互换了;还有,连续点击“=”时显示结果会不停变动,解决方法是:加“sort=0;”语句;另外,在点击“=”后,再点击数字键时,会发现点击的相应数字会显示在原显示结果的后面,解决方法是:加“append=1;”语句D.后来,在做后面的测试与思考时,遇到的问题就很多了。其中最棘手的就是Backspace键和连续四则运算的实现,其次就是M系列按键(MS:保存;MC:清除;MR:读数;M+:数加)的理解和响应代码的编写,再者就是正负号和小数点的处理,其工程量非常大。E.但是还有很多细节问题解决不了,例如小数后面的零因为是double型的而不是字符型,所以显示不出来,还有连续的四则运算实现不了,不过连续的单一运算还是可以运行的。F.通过此次试验,我初次认识了MFC,了解到其功能的强大,及其实用性之强,只不过我还只是接触到其冰山一角而已,要想真正地掌握MFC还有很长的路要走,还要投入更多精力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1