其他分享
首页 > 其他分享> > MFC中DoDataExchange()

MFC中DoDataExchange()

作者:互联网

DoDataExchange函数


void CFBKSUpDemoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_PROGRESSDISK1, m_Progress1);
	DDX_Control(pDX, IDC_PROGRESSDISK2, m_Progress2);
	DDX_Control(pDX, IDC_PROGRESSDISK3, m_Progress3);
	DDX_Control(pDX, IDC_PROGRESSDISK4, m_Progress4);
	DDX_Control(pDX, IDC_PROGRESSDISK5, m_Progress5);
	DDX_Control(pDX, IDC_PROGRESSDISK6, m_Progress6);
	DDX_Control(pDX, IDC_TAB_PLANT, m_TabPlant);	
}

通过VC的向导,可以为每个控件定义一个变量,这段代码就是让变量和控件绑定在一起。
MSDN:Called by the framework to exchange and validate dialog data.即框架调用此函数来改写与确认对话框数据。
DoDataExchange会被框架调用,用来改变和验证对话框的数据。在这个函数中一般是将控件(即上述代码中的IDC_PROGRESSDISK1等是控件的ID)和某些变量(即m_Progress1等是变量)关联,当在其它地方更改变量的值,通过UpdateData进行双向交换。如:

UpdateData();//其缺省值是TRUE,将控件的值传给变量,即IDC_PROGRESSDISK1传给m_Progress1
m_Progress1=testProgress;//为控件的变量赋值
UpdateData(FALSE);//将变量的值传给控件即:m_Progress1传给IDC_PROGRESSDISK1

UpdateData();函数内部调用了DoDataExchange函数。UpdateData();只有一个布尔型参数,它决定了数据的传送方向。缺省为TRUE表示将控件的值传给变量;FALSE表示将数据从数据成员重传送给对应的控件。

关于对话框的数据交换及验证
对话框的数据交换DDX和验证机制DDV,可以使对话框上控件与对象数据成员间协调工作

标签:Control,控件,DoDataExchange,MFC,pDX,DDX,IDC
来源: https://blog.csdn.net/weixin_38684352/article/details/114212142