动手学MFC之四——帮我算下加法

我不是学计算机的,但是有什么关系呢

OK,这次我们动手写点代码。我们要做一个小程序,实现两个数的加法,首先我们画一个小界面,如果你看了上一节,这个对你来说绝对不是问题。


调出Button1的属性对话框。


好了,现在可以说一说了,每个控件都有一个ID,我们将Button的ID改为IDC_ADD,Caption改为“帮我加一下”,今后点击这个按钮就执行加法。

改完之后双击按钮,弹出


         这个对话框的意思是会生成一个成员函数,该成员函数名字是OnAdd,点击OK,会跳转到编辑界面


         学过C++的看到这都知道,OnAdd是CAddForMeDlg的成员函数,OK。在函数中加一句话

MessageBox("hello");


现在就可以全编译运行了,运行后点击Button1,会弹出一个消息框


         是不是很神奇,不管怎样,这是我们的第一句代码。

         现在我们要回到对话框的编辑视图,怎么办呢?现在我们左边的视图应该是这样的


注意下面,我们现在在FileView里面,我们切换到Resource里面


点开Dialog,双击IDD_ADDFORME_DIALOG,回到了我们熟悉的对话框编辑界面,ok,我们将对话框变成下面的样子


将第一个Edit的ID改一下,改成IDC_EDIT_ADDONE


同样地将第二个Edit的ID改成IDC_EDIT_ADDTWO,将第三个Edit的ID改成IDC_EDIT_RESULT,改好之后,点击菜单上View->ClassWizard


会弹出下面的对话框


这个对话框太重要了,不过这里我们先切换到Member Variables


看,所有控件的ID都在这里,同过这些ID我们知道,IDC_ADD代表那个按钮,IDC_EDIT_ADDONE代表第一个加数,IDC_EDIT_ADDTWO代表第二个加数,IDC_EDIT_RESULT代表结果,IDCANCEL和IDOK代表取消和确认按钮。这就是为什么我们刚刚要改动控件的ID,将它们变成有意义的ID,做到一目了然,不然的话在这个ClassWizard中我们并不知道哪个ID代表哪个控件。

现在我们为控件关联成员变量。什么是关联成员变量?不急,先做了再说,选中IDC_EDIT_ADDONE,点击右边的Add Variable


名字改为m_addOne,类型改为int,如图,点击ok


看,这时候我们就给IDC_EDIT_ADDONE关联了一个int型的变量m_addOne。用同样的方法给IDC_EDIT_ADDTWO和IDC_EDIT_RESULT关联int型的变量m_addTow和m_addResult


关联完毕之后点击ok,一定要点击ok啊,不然之前的变量不会真正关联上,我在初学的时候经常犯这个错误的,一大堆变量,关联一半了,有点事,结果点了cancel,下次打开从头开始关联,晕死~~

好了,我们切换回FileView看看


这么多文件,现在只讲两个,AddForMeDlg.cpp和AddForMeDlg.h,当然了AddForMe是我的工程名,如果你在取工程名的时候取为XXX,那这两个文件就是XXXDlg.cpp和XXXDlg.h。先打开AddForMeDlg.cpp,是不是看到了我们刚刚写的OnAdd()函数呢?原来OnAdd()函数是在这个文件里面,在打开AddForMeDlg.h,看到里面有


噢,这就是刚刚关联的三个成员变量的定义,三个public的int型变量,往下翻还有


         啊,我们看到了OnAdd()函数,它是一个protected的成员函数。

         下面我们运行程序


注意到,这时编辑框中都是0,上一节编辑框中可什么都没有,那么这个0是哪里来的呢?噢,聪明的你应该猜到了,如果是变量的初始化,应该放在类的构造函数中,找到AddForMeDlg.cpp,在上面


我们看到了,在构造函数中,三个变量都赋值为0了,如果你不相信,将其中一个改为1,在全编译运行,你肯定能看到变化


         我们下面要做的是点击“帮我加一下”,算出等号后面的结果,你也许不会相信,只要加一句


m_result= m_addOne + m_addTwo;

这句话意思很明确,将第一个编辑框的数和第二个编辑框的数加起来,送给第三个编辑框。好了,运行吧

什么?点了按钮没用任何反应?是的,我又骗了你们。

         其实值已经到关联变量中了,但是要把它显示到编辑框上面,还要加一句话

UpdateData(FALSE);


这句话的意思是将关联变量中的值显示到编辑框控件中去,好了,再次全编译运行吧,哈哈,这次点击按钮,看1+0=1,对了。但是别高兴太早,你试着改变编辑框的值,再让它加一次,额,又变成1+0=1了,你的程序变成了一个只会算1+0的傻子,哪里不对呢?我想你已经猜到了,我们改变了编辑框的值,却没有把它传递给关联变量,所以再加一句话

UpdateData(TRUE);


UpdateData(TRUE)和UpdateData(FALSE),只有参数不同,代表不用的意思,UpdateData(TRUE)是将控件中显示的值传递给关联变量,UpdateData(FALSE)正好相反,是将关联变量中的值显示到控件上。记的话就是先看UpdateData,是更新数据的意思,也就是更新变量,故传递TRUE的话就是更新关联变量,也就是将控件中显示的值传递给关联变量。

         整个程序的逻辑就是先把控件中显示的值传递给关联变量,再计算,再把关联变量中的值显示到控件上。


         这时候程序就能正常运行了,如果你输入一个字母或者一个小数,点击按钮的时候会弹出一个对话框,告诉你“请键入一个整数”,怎么样?容错也不赖吧?

         这节的例子在http://download.csdn.net/detail/yeluoxiang/6889915,请大家继续关注哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值