MFC里的UpdateData()函数笔记

来源:互联网 发布:md5加密java代码解密 编辑:程序博客网 时间:2024/06/05 19:50

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();函数来调用。通俗的讲,它就是一个刷新按钮。

0 0