MFC程序员的WTL指南之对话框与控件(四)

翻译|其它|编辑:郝浩|2005-09-22 09:42:00.000|阅读 1378 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


 
  DDX的详细内容

  当然,DDX是用来做数据交换的,WTL支持在Edit控件和字符串之间交换数据,也可以将字符串解析成数字,转换成整型或浮点型变量,还支持Check box和Radio button组的状态与int型变量之间的转换。

  DDX 宏

  DDX可以使用6种宏,每一种宏都对应一个CWinDataExchange类的方法支持其工作,每一种宏都用相同的形式:DDX_FOO(控件ID, 变量),每一种宏都可以支持多种类型的变量,例如DDX_TEXT的重载就支持多种类型的数据。

  ·DDX_TEXT

  在字符串和edit box控件之间传输数据,变量类型可以是CString, BSTR, CComBSTR或者静态分配的字符串数组,但是不能使用new动态分配的数组。

  ·DDX_INT

  在edit box控件和数字变量之间传输int型数据。

  ·DDX_UINT

  在edit box控件和数字变量之间传输无符号int型数据。

  ·DDX_FLOAT

  在edit box控件和数字变量之间传输浮点型(float)数据或双精度型数据(double)。

  ·DDX_CHECK

  在check box控件和int型变量之间转换check box控件的状态。

  ·DDX_RADIO

  在radio buttons控件组和int型变量之间转换radio buttons控件组的状态。

  DDX_FLOAT宏有一些特殊,要使用DDX_FLOAT宏需要在stdafx.h文件的所有WTL头文件包含之前添加一行定义:

#define _ATL_USE_DDX_FLOAT

  这个定义是必要的,因为默认状态为了优化程序的大小而不支持浮点数。

  有关 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。

  如果控件更新成功DoDataExchange()会返回TRUE,如果失败就返回FALSE,对话框类有两个重载函数处理数据交换错误。一个是OnDataExchangeError(),无论什么原因的错误都会调用这个函数,这个函数的默认实现在CWinDataExchange中,它仅仅是驱动PC喇叭发出一声蜂鸣并将出错的控件设为当前焦点。另一个函数是OnDataValidateError(),但是要到本文的第五章介绍DDV时才用得到。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP