小默

[zz]MFC - 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函数时才会被调用。(因为每更新一次,它都需要重新绑定一次。是这样子吗?) "
引子:http://zhidao.baidu.com/question/89105522.html


posted on 2009-10-22 23:43 小默 阅读(948) 评论(0)  编辑 收藏 引用 所属分类: Language


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜