MFC里的UpdateData()函数笔记
2015-08-18 22:09
211 查看
UpdateData()这个函数是我在学习MFC控件编程中遇到的,当时看书上的例子并不明白这个函数的作用,后来在孙鑫老师VC++第七讲对话框的视频中明白了一点。那我就以对话框的例子举例具体说一下这个函数的妙用。
首先建立一个加法对话框,再添加三个静态文本控件和三个Edit 控件,最后一个Add Button控件,两个Edit 控件接收输入,点击Add按钮第三个控件会输出输出结果。对于从Edit 控件获取的数据方法,我使用的直接在这三个Edit 控件中添加三个int 型的三个变量m_num1,m_num2,m_num3.这个方法对于理解UpdateData()这个函数来说最省力。因为我们在Edit 控件的输入的数据会赋值给各自的变量。这个时候UpdateData()函数就要登场了,为什么我们输入的数据会保存在这些控件各自的变量中呢?那就还需要介绍这个函数DoDataExchange(CDataExchange*
pDX),对于自动生成的一个MFC对话框程序来说,它的作用等同与构造函数,它就是实现对话框里控件中数据交互函数。具体我就不说了,今天要说的不是它,但是它是幕后实施者。下面的就是具体代码:
UpdateData();
m_num3 = m_num1 + m_num2;
UpdateData(FALSE);
我们看到两个一样的函数有点不一样,UpdateData();是有参数的,只有一个BOOL型的参数,默认缺省为TRUE,当为TRUE时,读入数据;为FALSE,写入数据。什么叫读入数据?什么叫写入数据呢?就是当调用UpdateData();函数时,把我们在Edit 控件输入的数据更新到该控件的成员变量中,这样当我们需要该成员变量进行计算时才会有更新后的数据,不然它只会是构造函数里的初始值,写入数据是反过来,把计算或传过来的数据赋给该控件的变量中。其实UpdateData();它内部并没有做什么,它内部只是调用了DoDataExchange(CDataExchange*
pDX)函数而已。但是我们不能直接调用它,所以只能通过UpdateData();函数来调用。通俗的讲,它就是一个刷新按钮。
首先建立一个加法对话框,再添加三个静态文本控件和三个Edit 控件,最后一个Add Button控件,两个Edit 控件接收输入,点击Add按钮第三个控件会输出输出结果。对于从Edit 控件获取的数据方法,我使用的直接在这三个Edit 控件中添加三个int 型的三个变量m_num1,m_num2,m_num3.这个方法对于理解UpdateData()这个函数来说最省力。因为我们在Edit 控件的输入的数据会赋值给各自的变量。这个时候UpdateData()函数就要登场了,为什么我们输入的数据会保存在这些控件各自的变量中呢?那就还需要介绍这个函数DoDataExchange(CDataExchange*
pDX),对于自动生成的一个MFC对话框程序来说,它的作用等同与构造函数,它就是实现对话框里控件中数据交互函数。具体我就不说了,今天要说的不是它,但是它是幕后实施者。下面的就是具体代码:
UpdateData();
m_num3 = m_num1 + m_num2;
UpdateData(FALSE);
我们看到两个一样的函数有点不一样,UpdateData();是有参数的,只有一个BOOL型的参数,默认缺省为TRUE,当为TRUE时,读入数据;为FALSE,写入数据。什么叫读入数据?什么叫写入数据呢?就是当调用UpdateData();函数时,把我们在Edit 控件输入的数据更新到该控件的成员变量中,这样当我们需要该成员变量进行计算时才会有更新后的数据,不然它只会是构造函数里的初始值,写入数据是反过来,把计算或传过来的数据赋给该控件的变量中。其实UpdateData();它内部并没有做什么,它内部只是调用了DoDataExchange(CDataExchange*
pDX)函数而已。但是我们不能直接调用它,所以只能通过UpdateData();函数来调用。通俗的讲,它就是一个刷新按钮。
相关文章推荐
- UIP协议栈四
- javascript 正则表达式补充
- netty学习(一)--linux下的网络io模型简介
- SQLite数据库存储
- QTQ拍卖
- javascript 正则表达式补充
- Unity Tools
- Android应用程序结构
- 2015 7 6 Java核心技术卷一 第11章 异常 断言 日志和调试
- 十六进制颜色转换RGB对照表
- test3
- django1.8.3搭建博客——1
- Android应用程序结构
- Web前端优化最佳实践及工具集锦
- C++代码之 常用算法汇总
- java中转义字符(回车\r\n)的替换 反转义
- iOS学习(项目中遇到的错误1)
- 用文件保存的学生名单
- java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setCharacterStream(ILjava/io/Reader;
- exeScope软件修改exe或dll文件资源-20150818