vs2005 MFC计算器制作 联系客服

发布时间 : 星期四 文章vs2005 MFC计算器制作更新完毕开始阅读

制作计算器

本文采用动态创建控件的方法,使用 vs2005 MFC,仿照windows自带的计算器进行制作。 通过这个程序可以使你了解: 1 如何使用文本框、按钮

2 如何通过控件的ID获取控件指针 3 得到控件指针后可以对控件做些什么

4 字符串如何处理(拼接、查找、转换等) 5 如何给控件绑定响应事件 6 如何重载原有的函数 7 其他自己体会

界面分析:不要上面的菜单栏,也不要第一排的按钮,

些按钮都不要,只要一个文本框和下面右图中的按钮,布局方式也按照这个图布局。仔细数一数,共有23个按钮和一个编辑框。

功能分析:

用一下windows的计算器,可以发现: 1. 初始状态为0

2. 如果按下数字键,这个0就会变成相应的数字,如果按下小数点,就会变为“0.” 3. 除数不能为0

4. 连续按下多个运算符,以最后一个计算符为准

5. 每次按下运算符都会把之前的结果先经行计算,例如:你已经输入了 1+ 1 此时再按下

“+”,就会先把1+1进行计算,保存结果2.

6. 这个计算器分两行显示,上面一行显示算式,下面显示结果. 7. 当你输入一个数字和一个运算符就按下“=”时,第二个数默认和第一个相同,例如:“3*”

按下“=”,显示“9” 8. 开平方不能是负数 9. 其它异常暂不处理

新建项目

这里我给项目命名为:Calculator

应用程序的类型选择 基于对话框,点击完成

完成之后,先来观察一下项目中都有哪些东西:资源视图(下面右图)是我们的界面,解决方案中的是我们的源文件(下面左图)。我们的代码主要写在

中,.h文件中主要定义一些东西,.cpp文件中写具体的东西。

准备知识

初始界面

打开

界面,可以看到,上面已经给我们放上去了两个按

钮—确定和取消。由于我们建立的是对话框应用程序,这两个按钮的功能就是接受Enter键和ESC键的响应。先不要删除它,不然会造成不必要的麻烦:例如如果你删除了这两个按钮,当你在界面上按下回车时,程序找不到响应的控件,就会导致异常。

添加编辑框

在工具箱中找到编辑框控件中把它的ID改为TEXTC,便于记忆,

,把它拖放到界面合适的位置,并在属性栏

,这个编辑

框的作用就是显示数字。

有的资料会给这个编辑框关联一个值,用于处理编辑框中内容,在这里,我们就不给他关联值,要想给编辑框显示一个值或者是获取文本框中的值,通过代码去实现。包括后面按钮的处理,我们都尽量通过代码去实现它的功能。 至此,一行代码还没有写,先运行一下看看(如下图),如果你在文本框中按下回车键或者ESC键,就会发现程序会直接退出。这是因为“确定”按钮响应回车事件,“取消”按钮响应ESC键,如果不想退出,可以重载这两个按钮的响应事件,也可以屏蔽键盘的输入,这里暂不处理。(换句话说,如果不建立对话框应用程序,不就可以了吗?没办法暂时先学一学这个吧),如果觉着两个按钮很碍眼,可以把他们隐藏掉:把这两个按钮的Visible属性改为false

设置编辑框可以换行,有三个属性要更改;

Auto HScroll 设置为 False MultiLine 设置为 True

Want Return 设置为 True 代码写法:

CEdit* pEdit = (CEdit*)GetDlgItem(TEXTC); //断言,判断是不是pEdit(类似if语句) ASSERT(pEdit && pEdit->GetSafeHwnd());

即可。

//pEdit->SetSel(-1); //追加模式

pEdit->ReplaceSel(_T(\第一行\\r\\n第二行\)); 或者

SetDlgItemText(TEXTC,_T(\));

\\r\\n就是换行符 GetDlgItem

这个方法很有用,要注意!

读/写编辑框中内容

编辑框已经添加上去,那么怎样使用这个编辑框呢?主要就是怎样获取它里面的内容或者让它显示指定的内容。主要使用到两个函数: 读取控件中的内容:写入控件内容:

nID:控件的ID,也可以使控件的名字

rString:保存到的字符串(即:将控件上的文本获取到rString中)

lpszString:要显示出来的字符串。需要注意的是这个参数是LPCTSTR类型,不是CString类型,在使用的过程中要进行转换:(LPCTSTR)str

怎样在编辑框后面追加内容,不删除之前的内容呢?后面会讲到。

在界面上添加按钮

定义

你可以一个一个按钮拖放上去,但这里我使用的是通过代码进行创建。

根据开始时候的分析,共需要23个按钮,于是我们需要定义一个长度为23的按钮数组,为了便于更改,这里定义一个常量NUM,表示23. 如下:

public: static const int NUM = 23;

public: CButton *p_Button[NUM] ;

除此之外,为了便于写代码,再定义一个函数,用了创建按钮,如下:

public: CButton* NewMyButton(LPCTSTR m_Caption,int nID,CRect rect);

LPCTSTR m_Caption:m_Caption是按钮上显示的文字,LPCTSTR是参数类型 int nID:是按钮的ID号

CRect rect:rect是按钮的左上角坐标和大小,原型顺便再定义几个变量,后面写代码要用到:

CString equation ;//算式

CString inputNum ;//输入的数字 CString op;//运算符 double result;//计算结果 double number;//输入的数字

文件,写在里面就可以了。

前面说过,定义是放在“.h”文件中的,打开

写完之后先运行一下试试看,如果没有报错,就说明你写对了,如果报错,就这几行定义你

也能写错?! 接下来进入主题: