最近一段时间一直在作这个东西,刚刚拿到题目的时候认为这是一个简单的程序,但是随着编写程序的深刻,发现这也不是一个很简单的程序,主要是须要考虑到一些连续加减以及混合运算的状况。
首先介绍一下这个小计算器的功能。其实也没有什么新的功能啦,只是有一些简单的+、-、*、/运算,可以完成混合运算,是一个标准型的计算器。
创建文件
(1)创建应用程序外壳
建立一个新的AppWizard项目,命名为shiyan,选择Dialog based;其余都选用默认属性,单击Finish完成生成应用程序的步骤。
进入对话框界面之后,按下图所示布置显示框和功能按钮,这个小计算器一共须要10个数字键,9个功能键两个文本框。(下面的显示窗口是在测试程序时用的跟踪窗口,通常的计算器能够删去)。
(2)设置窗口属性
将上面的显示框属性设置成为CString型,下面的跟踪显示框设置成为Double型,而且绑定两个变量给他们。分别是m_text(显示框),m_show(跟踪显示框)ID改为IDC_text,IDC_show。数字键的ID号更改为为IDC_OnX,Caption改成相应的数字。
(3)设置公有变量
这个程序中我用的公共变量比较得多,主要是由于我是新手吗!!下面是全部公有变量的列表:
要给公有变量赋值须要在 OnInitDialog()函数中赋值,而这个函数就是在运行对话框时首先要运行的初始化函数,如今给须要赋初值的公有变量赋初值。
-
-
-
-
-
-
-
(3)编写按钮程序
数字键
双击你所要编写的数字键进入相应的按键程序编写,例如1建,双击后编写程序:
-
-
-
-
-
-
-
-
if((sign=='-')||(sign=='*')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
“-”号键程序:html
-
-
-
-
-
-
-
-
if((sign=='+')||(sign=='*')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
“*”号键程序:
-
-
-
-
-
-
-
-
if((sign=='+')||(sign=='-')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
“.”键程序:
-
void CShiyanDlg::Onpoint()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
乘方键程序:
-
void CShiyanDlg::Onsqrt()
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
“+/-”键程序:
-
void CShiyanDlg::Onsign()
-
-
-
-
-
ss.Format(_T(
"%f"),temp2);
-
-
-
-
-
-
-
“C”键程序:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
“DEL”键程序:
-
-
-
-
-
-
-
-
ss.Format(
"%s",ss.Left(u));
-
-
-
-
-
“=”号建:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-