初学MFC编程,写了一个简单的加法计算器,来分享一下。
编程环境为VS2013。
首先新建一个MFC应用程序,命名为Addition,选择存储路径 --> MFC应用向导界面,这个是MFC提供的默认环境,我们需要自己设置下,所以点击下一步 --> 应用程序类型
界面,应用程序类型选择基于对话框,其余默认 --> 至此就可以实现我们的加法计算器的小功能了,可以直接点完成,当然后面还是有很多设置,大家可以继续点下一步看看都
有些什么,后面有一些默认高级功能其实不是必须的,可以去掉。
点击完成后就进入Solution Explorer视图中了,此工程中的文件相对较少,在类视图中可以看到主要有3个类:CAboutDlg,CAdditionApp,CAdditionApp。CAdditionDlg是应
用程序的“关于”对话框,CAdditionApp是由CWinApp派生的类,CAdditionDlg是主对话框类,主对话框类也就是此应用程序运行后显示的主要界面。
此时界面中共有四个控件:1.整个大框框,是个对话框dialog,右键-->属性,可以进行一些设置。我们需要设置下Caption(标题),设置为简易加法计算器。其余默认。
2.中间的静态文本static text,右键删去,没用。
3.右下角确认按钮button。
4.右下角取消按钮button。
现在开始设置我们的加法计算器的界面。
点击最左边竖边栏的工具箱(如果没有的话可以在视图-->工具箱打开),拖三个static text和三个edit Control。分别表示被加数,加数,和。static text用于做标识,edit Control
用于接收输入。排列整齐下,可以通过格式-->对齐,格式-->均匀隔开排列下。
右键第一个static text属性。设置Caption为 被加数: 。
右键第一个edit Control属性。设置ID为 IDC_SUMMAND_EDIT。
按照同样的方法设置第二个static text属性Caption为 加数:,第二个edit Control的ID为IDC_ADDEND_EDIT。
第三个static text属性Caption为 和:,第三个edit Control的ID为IDC_SUM_EDIT。
将确认Caption改为计算,ID改为IDC_ADD_BUTTON。将取消按钮改为退出。
至此,界面就已经设计完毕了,可以点击调试或执行,看看运行结果。
开始逻辑实现。
右键第一个edit Control(即ID为IDC_SUMMAND_EDIT的编辑框),点击添加类变量,最右边选择类别为Value,最左边选择变量类型为double,设置变量名为m_summand,
m开头表示是成员变量(member)。像下面这样:
同样的方法给第二个编辑框添加变量m_addend,给第三个编辑框添加变量m_sum。
假设我这里点错了,添加了一个错误的成员变量m_error怎么办呢?要删除得去三个地方:
1.AdditionDlg.h的最下边,变量定义删掉。
2和3都在AdditionDlg.cpp里,一个是变量初始化,一个是变量与编辑框的联系(可以看到下图中m_error,前边有IDC_ADDEND_EDIT,这是什么?不就是我们
前不久定义的第二个编辑框的ID么)
把这三处都删掉,就可以重新添加变量了。
变量也都定义好了,这下真的真的真的要开始逻辑实现了。
当然加法的逻辑实现很简单,你给我一个a和一个b,我还你一个(a+b),可问题是a和b你怎么给我呢?毫无疑问肯定是从刚刚定义的三个编辑框里得到。
但是你输入之后只是在编辑框里, 并没有送到我刚刚定义的三个变量里。不过,无须担心,MFC提供了接口,可以使对话框中的字符串和变量相互转化,这里就可以解释
上图中m_error和IDC_ADDEND_EDIT的联系了,DoDataExchange就是做的两个内容互相转化的。
至于怎么调用,看下面我们的逻辑代码。
双击计算按钮,编译器自动为button添加了click事件方法,只要点击此button就会触发我们定义的事件,那对我们来说事件是什么呢?对了,就是计算加发。
此中,我们使用了两次UpdateData()函数,大家应该也能隐约猜到这个函数的功能,就是实现控件中显示的内容和相对应的变量进行数据变化,
刚刚也提到这个功能了,那里牵扯到一个函数DoDataExchange()。UpdateData函数就是调用了这个数据交换机制。
UpdateData函数原型如下:
BOOL UpdateData(BOOL bSaveAndValidate = 1)
参数是一个布尔类型,表示数据交换方向:true表示将控件数据内容保存到相应变量,false表示将变量保存到相应控件。可以看到默认值是1,即true。
至此,我们的简易加法计算器就做好了,大家可以运行看看结果如何。
逻辑很简单,只是实现了一个加法功能,大家感兴趣的还可以修改下计算按钮对应的事件方法函数中,修改逻辑,实现更多的功能。
这个小程序只是个起步,以后的路还很长。