博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DoDataExchange函数,UpdateData(TRUE)和UpdateData(FALSE)的区别
阅读量:4356 次
发布时间:2019-06-07

本文共 1538 字,大约阅读时间需要 5 分钟。

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) == 将成员变量的值赋值给控件,将数据从窗口显示。

转载于:https://www.cnblogs.com/alan666/p/8311921.html

你可能感兴趣的文章
Android-ndk-r8e wordlist 第二个参数不是数值参数
查看>>
PHP 预定义变量
查看>>
C++中指针和引用的区别比较
查看>>
Sybase存储过程例子
查看>>
关于 URI 和 URL 认识
查看>>
可以借鉴的阿里十面经验!
查看>>
利用linq快速判断给定数字是否包含在某个段范围内
查看>>
「NOI 2014」魔法森林
查看>>
指针循环错误实例
查看>>
python 图像处理,画一个正弦函数
查看>>
HTML5本地存储(Local Storage) 的前世今生(二)
查看>>
pycharm快捷键一览
查看>>
python高阶函数
查看>>
启用Microsoft loopback Adapte
查看>>
Invitation Cards(邻接表+逆向建图+SPFA)
查看>>
IOS学习笔记(二)UIDatePicker
查看>>
8款HTML5动画特效推荐源码
查看>>
网页加载时域名加载数量限制
查看>>
深入理解Java中的final关键字
查看>>
4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
查看>>