标准对话框数据交换例程

本主题列出了用于常见 MFC 对话框控件的标准对话框数据交换 (DDX) 例程。

注意

标准对话框数据交换例程在头文件 afxdd_.h 中定义。 但是,应用程序应包含 afxwin.h

DDX 函数

名称 描述
DDX_CBIndex 初始化或检索组合框控件当前选择的索引。
DDX_CBString 初始化或检索组合框控件编辑字段的当前内容。
DDX_CBStringExact 初始化或检索组合框控件编辑字段的当前内容。
DDX_Check 初始化或检索复选框控件的当前状态。
DDX_Control 子类化对话框中的给定控件。
DDX_DateTimeCtrl 初始化或检索日期和时间选取器控件的日期和/或时间数据。
DDX_IPAddress 初始化或检索 IP 地址控件的当前值。
DDX_LBIndex 初始化或检索列表框控件当前选择的索引。
DDX_LBString 初始化或检索列表框控件中的当前选择。
DDX_LBStringExact 初始化或检索列表框控件中的当前选择。
DDX_ManagedControl 创建与控件的资源 ID 相匹配的 .NET 控件。
DDX_MonthCalCtrl 初始化或检索月历控件的当前值。
DDX_Radio 初始化或检索当前在单选控件组中选中的单选控件基于 0 的索引。
DDX_Scroll 初始化或检索滚动控件 Thumb 的当前位置。
DDX_Slider 初始化或检索滑块控件 Thumb 的当前位置。
DDX_Text 初始化或检索编辑控件的当前值。

DDX_CBIndex

DDX_CBIndex 函数管理对话框、窗体视图或控件视图对象中的组合框控件与对话框、窗体视图或控件视图对象的 int 数据成员之间的 int 数据传输。

void AFXAPI DDX_CBIndex(
    CDataExchange* pDX,
    int nIDC,
    int& index);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的组合框控件的资源 ID。

index
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

备注

调用 DDX_CBIndex 时,将 index 设置为当前组合框选择的索引。 如果未选择任何项,index 将设置为 0。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_CBString

DDX_CBString 函数管理对话框、窗体视图或控件视图对象中组合框控件的编辑控件与对话框、窗体视图或控件视图对象的 CString 数据成员之间的 CString 数据传输。

void AFXAPI DDX_CBString(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的组合框控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DDX_CBString 时,value 将设置为当前组合框选择。 如果未选择任何项,value 将设置为长度为零的字符串。

注意

如果组合框是下拉列表框,则交换的值限制为 255 个字符。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_CBStringExact

DDX_CBStringExact 函数管理对话框、窗体视图或控件视图对象中组合框控件的编辑控件与对话框、窗体视图或控件视图对象的 CString 数据成员之间的 CString 数据传输。

void AFXAPI DDX_CBStringExact(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的组合框控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DDX_CBStringExact 时,value 将设置为当前组合框选择。 如果未选择任何项,value 将设置为长度为零的字符串。

注意

如果组合框是下拉列表框,则交换的值限制为 255 个字符。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_Check

DDX_Check 函数管理对话框、窗体视图或控件视图对象中的复选框控件与对话框、窗体视图或控件视图对象的 int 数据成员之间的 int 数据传输。

void AFXAPI DDX_Check(
    CDataExchange* pDX,
    int nIDC,
    int& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的复选框控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DDX_Check 时,value 将设置为复选框控件的当前状态。 有关可能的状态值的列表,请参阅 Windows SDK 中的 BM_GETCHECK

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_Control

DDX_Control 函数子类化由 nIDC 指定的对话框、窗体视图或控件视图对象的控件。

void AFXAPI DDX_Control(
    CDataExchange* pDX,
    int nIDC,
    CWnd& rControl);

参数

pDX
一个指向 CDataExchange 对象的指针。

nIDC
要子类化的控件的资源 ID。

rControl
对与指定控件相关的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DoDataExchange 函数时,pDX 对象由框架提供。 因此,DDX_Control 应仅在 DoDataExchange 重写中调用。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_DateTimeCtrl

DDX_DateTimeCtrl 函数管理对话框或窗体视图对象中日期和时间选取器控件(CDateTimeCtrl)与对话框或窗体视图对象的 CTimeCOleDateTime 数据成员之间的日期和/或时间数据传输。

void AFXAPI DDX_DateTimeCtrl(
    CDataExchange* pDX,
    int nIDC,
    CTime& value);

void AFXAPI DDX_DateTimeCtrl(
    CDataExchange* pDX,
    int nIDC,
    COleDateTime& value);

void AFXAPI DDX_DateTimeCtrl(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。 无需删除此对象。

nIDC
与成员变量关联的日期和时间选取器控件的资源 ID。

value
在前两个版本中,对与之交换数据的 CTimeCOleDateTime 成员变量、对话框、窗体视图或控件视图对象的引用。 在第三个版本中,对 CString 数据成员控件视图对象的引用。

注解

调用 DDX_DateTimeCtrl 时,将 value 设置为日期和时间选取器控件的当前状态,或者将控件设置为 value,具体取决于交换的方向。

在上面的第三个版本中,DDX_DateTimeCtrl 管理日期时间控件与控件视图对象的 CString 数据成员之间的 CString 数据传输。 使用当前区域设置的日期和时间格式规则设置字符串格式。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_ManagedControl

创建与控件的资源 ID 相匹配的 .NET 控件。

语法

template <typename T>
void DDX_ManagedControl(
   CDataExchange* pDX,
   int nIDC,
   CWinFormsControl<T>& control );

参数

pDX
指向 CDataExchange对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的控件的资源 ID。

control
CWinFormsControl对象的引用。

备注

DDX_ManagedControl 调用 CWinFormsControl::CreateManagedControl 来创建与资源控件 ID 匹配的控件。 使用 DDX_ManagedControlCDialog::OnInitDialog 中的资源 ID 创建控件。 对于数据交换,无需将 DDX/DDV 函数与 Windows 窗体控件一起使用。

有关详细信息,请参阅如何:使用 Windows 窗体进行 DDX/DDV 数据绑定

要求

标头afxwinforms.h

DDX_IPAddress

DDX_IPAddress 函数管理 IP 地址控件与控件视图对象数据成员之间的数据传输。

void AFXAPI DDX_IPAddress(
    CDataExchange* pDX,
    int nIDC,
    DWORD& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的 IP 地址控件的资源 ID。

value
对包含 IP 地址控件的四字段值的 DWORD 的引用。 填充或读取字段,如下所示。

字段 包含字段值的位
3 0 到 7
2 8 到 15
1 16 到 23
0 24 到 31

使用 Win32 IPM_GETADDRESS 读取值,或使用 IPM_SETADDRESS 填充值。 Windows SDK 中描述了这些消息。

备注

调用 DDX_IPAddress 时,要么从 IP 地址控件读取 value,要么将 value 写入控件,具体取决于交换的方向。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_LBIndex

DDX_LBIndex 函数管理对话框、窗体视图或控件视图对象中的列表框控件与对话框、窗体视图或控件视图对象的 int 数据成员之间的 int 数据传输。

void AFXAPI DDX_LBIndex(
    CDataExchange* pDX,
    int nIDC,
    int& index);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的列表框控件的资源 ID。

index
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DDX_LBIndex 时,index 设置为当前列表框选择的索引。 如果未选择任何项,index 将设置为 -1。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_LBString

DDX_LBString 函数管理对话框、窗体视图或控件视图对象中的列表框控件与对话框、窗体视图或控件视图对象的 CString 数据成员之间的 CString 数据传输。

void AFXAPI DDX_LBString(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的列表框控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

备注

当调用 DDX_LBString 以将数据传输到列表框控件时,将选择控件中开头与 value 匹配的第一个项。 (若要匹配整个项而不仅仅是前缀,请使用 DDX_LBStringExact。)如果没有匹配项,则不选择任何项。 匹配不区分大小写。

调用 DDX_LBString 以从列表框控件传输数据时,value 将设置为当前列表框选择。 如果未选择任何项,value 将设置为长度为零的字符串。

注意

如果列表框是下拉列表框,则交换的值限制为 255 个字符。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_LBStringExact

DDX_CBStringExact 函数管理对话框、窗体视图或控件视图对象中列表框控件的编辑控件与对话框、窗体视图或控件视图对象的 CString 数据成员之间的 CString 数据传输。

void AFXAPI DDX_LBStringExact(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的列表框控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

注解

调用 DDX_LBStringExact 以将数据传输到列表框控件时,将选择控件中与 value 匹配的第一个项。 (若仅匹配前缀而不是整个项,请使用 DDX_LBString。)如果没有匹配项,则不选择任何项。 匹配不区分大小写。

调用 DDX_CBStringExact 以从列表框控件传输数据时,value 将设置为当前列表框选择。 如果未选择任何项,value 将设置为长度为零的字符串。

注意

如果列表框是下拉列表框,则交换的值限制为 255 个字符。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_MonthCalCtrl

DDX_MonthCalCtrl 函数管理对话框、窗体视图或控件视图对象中的月历控件(CMonthCalCtrl)与对话框、窗体视图或控件视图对象的 CTimeCOleDateTime 数据成员之间的日期数据传输。

void AFXAPI DDX_MonthCalCtrl(
    CDataExchange* pDX,
    int nIDC,
    CTime& value);

void AFXAPI DDX_MonthCalCtrl(
    CDataExchange* pDX,
    int nIDC,
    COleDateTime& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。 无需删除此对象。

nIDC
与成员变量关联的月历控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的 CTimeCOleDateTime 成员变量的引用。

备注

注意

控件仅管理日期值。 时间对象中的时间字段设置为反映控件窗口的创建时间,或通过调用 CMonthCalCtrl::SetCurSel 在控件中设置的任何时间。

调用 DDX_MonthCalCtrl 时,value 将设置为月历控件的当前状态。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_Radio

DDX_Radio 函数管理对话框、窗体视图或控件视图对象中的单选控件组与对话框、窗体视图或控件视图对象的 int 数据成员之间的 int 数据传输。 int 数据成员的值取决于选择组内的哪个单选按钮。

void AFXAPI DDX_Radio(
    CDataExchange* pDX,
    int nIDC,
    int& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
组中第一个单选控件的资源 ID。

value
对与之交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

备注

调用 DDX_Radio 时,value 将设置为单选控件组的当前状态。 该值设置为当前选中的单选控件的从零开始的索引,如果没有选中单选控件,则为 -1。

例如,如果已选中组中的第一个单选按钮(该按钮具有 WS_GROUP 样式),int 成员的值将为 0,依此类推。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_Scroll

DDX_Scroll 函数管理对话框、窗体视图或控件视图对象中的滚动条控件与对话框、窗体视图或控件视图对象的 int 数据成员之间的 int 数据传输。

void AFXAPI DDX_Scroll(
    CDataExchange* pDX,
    int nIDC,
    int& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
与控件属性关联的滚动条控件的资源 ID。

value
对与其交换数据的对话框、窗体视图或控件视图对象的成员变量的引用。

备注

调用 DDX_Scroll 时,将 value 设置为控件 Thumb 的当前位置。 有关与控件 Thumb 当前位置关联的值的详细信息,请参阅 Windows SDK 中的 GetScrollPos

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

DDX_Slider

DDX_Slider 函数管理对话框或窗体视图中的滑块控件与对话框或窗体视图对象的 int 数据成员之间的 int 数据传输。

void AFXAPI DDX_Slider(
    CDataExchange* pDX,
    int nIDC,
    int& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
滑块控件的资源 ID。

value
对要交换的值的引用。 此参数保留或设置滑块控件的当前位置。

注解

调用 DDX_Slider 时,将 value 设置为控件 Thumb 的当前位置,或值接收位置,具体取决于交换的方向。

有关 DDX 的更多信息,请参阅 对话框数据交换和验证。 有关滑块控件的信息,请参阅使用 CSliderCtrl

要求

页眉 afxdd_.h

DDX_Text

DDX_Text 函数管理对话框、窗体视图或控件视图中编辑控件与对话框、窗体视图或控件视图对象的 CString 数据成员之间的 intUINTlongDWORDCStringfloatdouble 数据的传输。

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    BYTE& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    short& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    int& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    UINT& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    long& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    DWORD& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    CString& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    float& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    double& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    COleCurrency& value);

void AFXAPI DDX_Text(
    CDataExchange* pDX,
    int nIDC,
    COleDateTime& value);

参数

pDX
一个指向 CDataExchange 对象的指针。 框架提供了此对象以建立数据交换的上下文,包括其方向。

nIDC
对话框、窗体视图或控件视图对象中编辑控件的 ID。

value
对对话框、窗体视图或控件视图对象中数据成员的引用。 value 的数据类型取决于使用的是 DDX_Text 的哪个重载版本。

备注

有关 DDX 的更多信息,请参阅 对话框数据交换和验证

要求

页眉 afxdd_.h

另请参阅

标准对话框数据验证例程
宏和全局函数
CWinFormsControl::CreateManagedControl
CDialog::OnInitDialog