WTL的DDX(对话框数据交换)很像MFC,可以使用很简单的方法将变量和控件关联起来。
DDX是用来做数据交换的,WTL支持在Edit控件和字符串之间交换数据,也可以将字符串解析成数字,转换成整型或浮点型变量,还支持Check Box和Radio Button组的状态与int型变量之间的转换。DDX可以使用6种宏,每一种宏都对应一个CWinDataExchange类的方法支持其工作,每一种宏都用相同的形式:DDX_FOO(控件ID, 变量),每一种宏都可以支持多种类型的变量,例如DDX_TEXT的重载就支持多种类型的数据。
DDX_TEXT
在radio buttons控件组和int型变量之间转换radio buttons控件组的状态。
DoDataExchange()方法
数据间的传递需要调用DoDataExchange()方法和在MFC中使用UpdateData()一样,DoDataExchange()的函数原型是:
BOOL DoDataExchange ( BOOL bSaveAndValidate = FALSE, UINT nCtlID = (UINT)-1 );
参数:
bSaveAndValidate
- 指示数据传输方向的标志。TRUE表示将数据从控件传输给变量,FALSE表示将数据从变量传输给控件。需要注意得是这个参数的默认值是FALSE,而MFC的UpdateData()函数的默认值是TRUE。为了方便记忆,你可以使用DDX_SAVE 和 DDX_LOAD标号(它们分别被定义为TRUE和FALSE)。 nCtlID
- 使用-1可以更新所有控件,如果只想DDX宏作用于一个控件就使用控件的ID。