
DoDataExchange函数有什么用?
展开全部
对于这个函数,msdn是这样描述的:called
by
the
framework
to
exchange
and
validate
dialog
data.大意是框架调用此函数来改写与确认对话框数据。
反正我没明白这句话的意思。
到是看了下dodataexchange函数里的ddx型函数,似乎明白了dodataexchange函数的作用。最近看书的效果很明显哇。
按我的理解,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,只是一个值引用而已。差不多的意思就是这个变量被框架传递给控件了。控件只负责使用此变量
,而不负责改写此变量。-.-
哈哈,写到这里,我也终于明白msdn那句话的意思了,原来dodataexchange函数是被框架与控件用来交流数据的。而里面的ddx函数才是动态绑定技术。
值得注意的一点是:msdn后面附加了一句
never
call
this
function
directly.
it
is
called
by
the
updatedata
member
function.
call
updatedata
to
initialize
a
dialog
box’s
controls
or
retrieve
data
from
a
dialog
box.就是说此函数永远不被直接调用,它只是呼叫updatedata函数时才会被调用。(因为每更新一次,它都需要重新绑定一次。是这样子吗?)
总之,这个函数对理解mfc框架是很有用的。对于写控件也是很有用的。
good
good
study,day
day
up.....
updatadata函数内部调用了dodataexchange。该函数只有一个布尔型参数,它决定了数据传送的方向。调用updatedata(true)将数据从对话框的控件中传送到对应的数据成员中,调用updatedata(false)则将数据从数据成员中传送给对应的控件。
updatedata(false)是将变量的值传到控件.
updatedata(true)是从控件中取值到关联的变量
by
the
framework
to
exchange
and
validate
dialog
data.大意是框架调用此函数来改写与确认对话框数据。
反正我没明白这句话的意思。
到是看了下dodataexchange函数里的ddx型函数,似乎明白了dodataexchange函数的作用。最近看书的效果很明显哇。
按我的理解,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,只是一个值引用而已。差不多的意思就是这个变量被框架传递给控件了。控件只负责使用此变量
,而不负责改写此变量。-.-
哈哈,写到这里,我也终于明白msdn那句话的意思了,原来dodataexchange函数是被框架与控件用来交流数据的。而里面的ddx函数才是动态绑定技术。
值得注意的一点是:msdn后面附加了一句
never
call
this
function
directly.
it
is
called
by
the
updatedata
member
function.
call
updatedata
to
initialize
a
dialog
box’s
controls
or
retrieve
data
from
a
dialog
box.就是说此函数永远不被直接调用,它只是呼叫updatedata函数时才会被调用。(因为每更新一次,它都需要重新绑定一次。是这样子吗?)
总之,这个函数对理解mfc框架是很有用的。对于写控件也是很有用的。
good
good
study,day
day
up.....
updatadata函数内部调用了dodataexchange。该函数只有一个布尔型参数,它决定了数据传送的方向。调用updatedata(true)将数据从对话框的控件中传送到对应的数据成员中,调用updatedata(false)则将数据从数据成员中传送给对应的控件。
updatedata(false)是将变量的值传到控件.
updatedata(true)是从控件中取值到关联的变量
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询