zoukankan      html  css  js  c++  java
  • DoDataExchange函数,UpdateData(TRUE)和UpdateData(FALSE)的区别


    MFC控件(暂时为Edit控件)与数据的绑定,变量值可以在界面和后台之间传递。
    我们在DoDataExchange(CDataExchange* pDX) 函数里,实现了MFC控件和变量的绑定。  若需要 编辑框控件 与 变量的绑定,则调用DDX函数:DDX_Text() ;若需要 复选框控件 与 变量 的绑定,则调用DDX函数:DDX_Check() 等。
    void CMFCApplication1Dlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialogEx::DoDataExchange(pDX);
    	DDX_Text(pDX,IDC_EDIT_A,Add.a);//需要自己根据实际情况添加。在新建工程下是没有这3条语句的
    	DDX_Text(pDX,IDC_EDIT_B,Add.b);
    	DDX_Text(pDX,IDC_EDIT_C,Add.c);
    }
    DoDataExchange函数其实是一项数据动态绑定技术。比如你在写动态按扭过程中须对按钮添加变量时,怎么添加?控件类已经写好了,其变量是已经固定的。你要添加新的变量就要用到DoDataExchange函数。
    所以你要在对话框的构造函数里面初始化一个变量,再用DoDataExchange函数将它绑定到你的动态按扭中,比如:DDX_Check(pDX, IDC_CHECK1, m_Lesson1);这就是将m_Lesson1(这是一个外部变量,其定义在对话框的构造函数里)绑定到IDC_CHECK1中。

    看下DDX_Check函数原型:void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);可以看到m_Lesson并不是真的添加到IDC_CHECK1控件里了,注意这是int& value,只是一个值引用而已。差不多的意思就是这个变量被框架传递给控件了。控件只负责使用此变量 ,而不负责改写此变量。

    只有在MFC控件(暂时为Edit控件)与 变量 绑定  后,进行 UpdateData 才有意义。
    1、

    UpdateData(TRUE)是将控件的状态传给其关联的变量,当然你要为控件关联上变量才行。

    UpdateData(FALSE)是将控件的关联变量的值传给控件并改变控件状态。

    UpdateData刷新的是当前对话框。

    UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。

    UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。


    2、
    UpdateData(TRUE)
    ——刷新控件的值到对应的变量。(外部输入值交给内部变量)
    即:控件的值—>变量。
    UpdateData(FALSE)
    —— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)
    即:变量值—>控件显示。
    例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode);
    将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);
    简单地说,如果UpdateData(TRUE) == 将控件的值赋值给成员变量,即从窗口编辑框中读入数据;UpdateData(FALSE) == 将成员变量的值赋值给控件,将数据从窗口显示。
  • 相关阅读:
    Educational Codeforces Round 85 D. Minimum Euler Cycle(模拟/数学/图)
    Educational Codeforces Round 85 C. Circle of Monsters(贪心)
    NOIP 2017 提高组 DAY1 T1小凯的疑惑(二元一次不定方程)
    Educational Codeforces Round 85 B. Middle Class(排序/贪心/水题)
    Educational Codeforces Round 85 A. Level Statistics(水题)
    IOS中的三大事件
    用Quartz 2D画小黄人
    strong、weak、copy、assign 在命名属性时候怎么用
    用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
    Attempting to badge the application icon but haven't received permission from the user to badge the application错误解决办法
  • 原文地址:https://www.cnblogs.com/alan666/p/8311921.html
Copyright © 2011-2022 走看看