VS2013/MFC编程:(对话框:为控件添加消息处理函数)
来源:互联网 发布:假面骑士exaid知乎 编辑:程序博客网 时间:2024/06/06 03:44
创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。
MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。
一.添加消息处理函数
仍以前面的加法计算器的程序为例,说明怎样为“计算”按钮控件添加消息处理函数。添加方法列出4种:
1.使用类向导添加消息处理函数
在添加类、消息处理函数等经常会用到类向导,可以说是一个很核心的功能。
大家应该记得,“计算”按钮的ID为IDC_ADD_BUTTON,Oject IDs列表中有此ID,因为我们是想实现点击按钮后的消息处理函数,所以在Messages列表中选择BN_CLICKED消息,然后点右上方的添加处理程序r就可以添加BN_CLICKED消息处理函数OnClickedAddButton了。当然你也可以改名,但一般用的默认的就可以。
2.通过“Add Event Handler…”添加消息处理函数
在“计算”按钮上点右键,然后在右键菜单中选择菜单项“Add Event Handler…”,弹出“Event Handler Wizard”对话框,如下图:
可见“消息类型”中默认选中的就是BN_CLICKED消息,函数名和所在类都已经自动给出,直接点“添加编辑”就可以了。
3.在按钮的属性视图中添加消息处理函数
我们在“计算”按钮上点右键,在右键菜单中选择“Properties”,右侧面板中会显示按钮的属性视图。
我们可以像上图中那样,点属性视图的“控制时间”按钮(类似闪电标志),下面列出了“计算”按钮的所有消息。我们要处理的是BN_CLICKED消息,点其右侧空白列表项,会出现一个带下箭头的按钮,再点此按钮会出现“<Add> OnBnClickedAddButton”选项,最后选中这个选项就会自动添加BN_CLICKED处理函数了。
4.双击按钮添加消息处理函数
最直接最简单的方法就是,双击“计算”按钮,MFC会自动为其在CAdditionDlg类中添加BN_CLICKED消息的处理函数OnBnClickedAddButton()。
二.在消息处理函数中添加自定义功能
在我们使用任意一种方法添加了消息处理函数以后,都只能得到一个空的OnBnClickedAddButton()函数的函数体,要实现我们想要的功能,还需要在函数体中加入自定义功能代码。
在加法计算器程序中,我们想要“计算”按钮实现的功能是,获取被加数和加数的数值,然后计算它们的和并显示到和的编辑框里。那么,OnBnClickedAddButton()的函数体就应修改为:
- void CAdditionDlg::OnBnClickedAddButton()
- {
- // TODO: Add your control notification handler code here
- // 将各控件中的数据保存到相应的变量
- UpdateData(TRUE);
- // 将被加数和加数的加和赋值给m_editSum
- m_editSum = m_editSummand + m_editAddend;
- // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值
- UpdateData(FALSE);
- }
对于UpdateData()函数的说明在上一讲中已经介绍过,如果忘了可以再回上一讲了解了解。
接下来我们运行下此应用程序。在运行结果界面中,输入被加数5.1,加数2.3,然后点“计算”:
在上图中可以看到,点“计算”按钮后,和的编辑框中显示了正确结果:7.4。
简单分析下运行过程:输入被加数和加数,点“计算”按钮后产生点击消息,从而调用OnBnClickedAddButton()函数。进入此函数后,首先由UpdateData(TRUE)函数将被加数的值5.1和加数的值2.3分别保存到变量m_editSummand和m_editAddend,然后通过语句m_editSum = m_editSummand + m_editAddend;计算出被加数和加数的和为7.4,并把7.4赋值给m_editSum。最后调用UpdateData(FALSE)根据被加数、加数、和的值更新三个编辑框的显示值,就得到了上图中的结果。
到此,一个具有简单的加法运算功能的加法计算器应用程序就基本完成了。如果大家想实现其他功能,可以修改控件资源和消息处理函数来练习下。本节就讲到这里了,有问题欢迎到博客留言讨论。
转载自:http://blog.csdn.net/zhaoyinhui0802/article/details/53325555
- VS2013/MFC编程入门之八(对话框:为控件添加消息处理函数)
- VS2013/MFC编程:(对话框:为控件添加消息处理函数)
- VS2013/MFC编程入门(对话框:为控件添加消息处理函数)
- C++ MFC / VS2013 之七 (对话框:为控件添加消息处理函数)
- VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)
- VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)
- VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)
- VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)
- VS2013/MFC编程入门之六(对话框:为对话框添加控件)
- VS2010/MFC编程入门之三(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- C++ MFC / VS2013 之五 (对话框:为对话框添加控件)
- VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- 鸡啄米vc++2010系列8(对话框:为控件添加消息处理函数)
- VS2013/MFC编程入门之十五(对话框:消息对话框)
- MFC学习笔记——CDialog(为控件添加消息处理函数)
- VS2013/MFC基于对话框编程:自定义消息
- 为控件添加消息处理函数
- request.setattribute怎么在jsp取值
- iOS中的KVC和KVO的理解
- 天文学中常用的坐标系
- 【Java】解决FTPClient上传中文目录出现中文名乱码问题
- 释放Windows为硬件保留内存,双系统安装释放法。
- VS2013/MFC编程:(对话框:为控件添加消息处理函数)
- hive的row_number()、rank()和dense_rank()的区别以及具体使用
- struts2学习之---国际化
- JekinsReport
- go2shell install
- hashset中hashcode和equals方法
- [bigdata] 基于docker 打开hadoop
- 求最小生成树(Prim算法)(1075)
- WindowsServer2003搭建FTP服务器整套教程