MFC入门之简易计算器制作
最近自学MFC,入门的时候走了不少弯路,所以特做此教程,希望能帮助一些人能够快速入门,少走一些弯路。这个教程就是通过一个简易计算器的制作让大家了解MFC界面编程的基本步骤和几个常用控件的使用方法。
使用软件Visual C++ 6.0.
首先,新建一个MFC基于对话框的工程。
点击文件-新建,在工程选项卡里选择MFC AppWizard[exe],给工程命名Jisuan。点击确定。
在接下来的向导里选择基于对话框,其他选项使用默认即可,之间点击完成。
先给大家介绍一下Visual C++ 6.0的界面。
左边框起来的是文件资源控制区,默认有三个选项卡,分别是ClassView、ResourceView和FileView。分别用来显示类、资源和文件。
中间这个主要操作区呢,就是我们用来设计界面和编程的窗口了。现在这个
是IDD_JISUAN_DIALOG资源,如图所示。
右边那个是控件工具箱,如果没有显示的话可以右击菜单栏空白区域,把控件前打上对号即可。
然后给大家介绍一下今天需要用到的控件。
如左图所示,今天主要需要用到四个控件。
第一个是静态文本控件,就是可以往对话框上放一些静态的文字。
第二个是编辑框,它是可以往里面输入文字的。
第三个是组合框,它是把用来给对话框分区,使界面更加美观明了。
第四个是按钮控件,是用来点一下产生某个操作的。上面那个是编辑框,下面这个是按钮控件。
点一下控件,拖到对话框上,即可使用。
下面我们可以这样布局:
上面两个编辑框里输入数字,中间四个按钮分别是+ - * /,然后下面编辑框里显示数字。
下面开始给大家介绍第一个最重要的操作,就是属性操作。我们想让这些控件的显示文字改变,就需要修改它的属性。
选定某个控件,右击,选择属性,即可来改变它们的属性了。我们挨个控件介绍。
首先是组合框。
组合框的属性,我们看到有一个ID,一个标题。首先说明一点,每个控件都必须有一个ID值,而且一般每个控件的ID值不能相同。这里说一般,当然就有特殊,组合框就是一个,因为它就是用来显示用的,一般不涉及事件操作,所以它的ID都默认为IDC_STATIC,还有接下来要说的静态文本控件,它的ID也是默认为IDC_STATIC。
组合框我们常需要改的就是标题了,我们把它改为“操作数”。我们会看到,对话框中组合框的标题也就随着改变了。
同理,我们可以给下面两个组合框分别命名为“操作命令”和“结果”。最终如图:
下面我们对应的来讲静态文本控件。打开它的属性。
我们发现他的属性和组合框基本上是一样的。我们同样的只需要修改它的标题即可,分别命名为“第一个数”“第二个数”“结果”,最终如图:
下面我们介绍编辑框。打开编辑框属性页面。
我们发现它没有标题项,只有ID,ID默认名称为IDC_EDIT1、IDC_EDIT2、IDC_EDIT3……最好我们把它们改为我们好记的名称,比如改为“IDC_FIRNUM”“IDC_SECNUM”“IDC_RESULT”,这样便于以后使用,修改程序也方便。
另外,我们可以把样式选项里排列文本改为靠右,更加符合我们习惯。
下面两个分别修改即可。最终如图:
最后是按钮控件,打开它的属性。
我们看到它的属性通常需要操作的也是ID和标题。我们把四个按钮的ID分别改为“IDC_JIA”“IDC_JIAN”“IDC_CHENG”“IDC_CHU”。标题分别改为+ - * /。最终如图:
首先我们先编译、运行一下。
我们发现,运行的结果跟我们想要的是一样的,下面需要的操作,也是最重要的,就是如何给控件绑定变量,然后按下按钮进行某些操作。即类向导的使用。
首先我们先给三个编辑框绑定三个float型的变量。
右键第一个编辑框,选择建立类向导。或者直接从菜单栏查看-建立类向导进。我们可以看到这样的页面
我们打开第二个选项卡Member Variables,成员变量。为IDC_FIRNUM 增加一个变量,点Add Variable…,我们为它增加一个float型的变量,命名为m_Firnum
然后分别给第二个编辑框增加float变量m_Secnum,第三个编辑框增加float 变量m_Result。如图
点击确定。这样就完成了变量与编辑框控件的绑定。
下面我们进行对按钮控件的事件响应函数的添加。同样的,右键,建立类向导。
这次我们使用的是第一个选项卡Message Maps。从IDs中选择IDC_JIA,即加这个按钮,从Messages中选择BN_CLICKED,即当被单击的时候,然后点Add Function…为其添加函数。
然后弹出对话框,为函数命名,选择默认即可,点击OK。
然后我们看到在最下方的Member functions中,增加了一个函数OnJia,选中,点击Edit Code,编辑代码。
然后我们会看到出来这样一个函数:void CJisuanDlg::OnJia()
然后里面提示你填入代码。
现在我们只需要给按一下+ 这个按钮产生的响应添加代码即可。那产生什么
响应呢??
肯定是首先获取前两个操作数,把两个操作数加起来,然后值给第三个操作数,然后显示。
这里有一个UpdateData(Bool)函数。
UpdateData(TRUE)
——刷新控件的值到对应的变量。(外部输入值交给内部变量) UpdateData(FALSE)
——拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)
然后代码就可以这么写:
然后编译、运行:
输入操作数:1.3 2.4
然后点击+按钮
结果编辑框中出来数据3.7。说明我们的程序是正确的。
同理,我们可以为剩下的三个按钮添加响应函数。这些操作就留给读者自己去完成了。
后记:用了一上午的时间终于把这个教程敲完,希望能帮助大家。
——小李