属性页 (MFC)

属性页支持基于对话框数据交换 (DDX) 的数据映射机制,在可自定义的图形界面中显示特定 OLE 控件属性的当前值以供查看和编辑。

此数据映射机制将属性页控件映射到 OLE 控件的各个属性。 控件属性的值反映了属性页控件的状态或内容。 属性页控件与属性之间的映射由属性页的 DoDataExchange 成员函数中的 DDP_ 函数调用指定。 下面列出的 DDP_ 函数用于交换通过控件属性页输入的数据

属性页数据传输

名称 描述
DDP_CBIndex 将组合框中所选字符串的索引与控件的属性相链接。
DDP_CBString 将组合框中所选的字符串与控件的属性相链接。 所选字符串可以使用与属性值相同的字母开头,但不需要与其完全匹配。
DDP_CBStringExact 将组合框中所选的字符串与控件的属性相链接。 所选字符串和属性的字符串值必须完全匹配。
DDP_Check 将控件属性页中的复选框与控件的属性相链接。
DDP_LBIndex 将列表框中所选字符串的索引与控件的属性相链接。
DDP_LBString 将列表框中所选的字符串与控件的属性相链接。 所选字符串可以使用与属性值相同的字母开头,但不需要与其完全匹配。
DDP_LBStringExact 将列表框中所选的字符串与控件的属性相链接。 所选字符串和属性的字符串值必须完全匹配。
DDP_PostProcessing 完成从控件传输属性值的操作。
DDP_Radio 将控件属性页中的单选按钮组与控件的属性相链接。
DDP_Text 将控件属性页中的控件与控件的属性相链接。 此函数处理多种不同类型的属性,例如 doubleshort、BSTR 和 long

有关 DoDataExchange 函数和属性页的详细信息,请参阅 ActiveX 控件:属性页一文。

下面列出了用于创建和管理 OLE 控件的属性页的宏:

属性页

名称 描述
BEGIN_PROPPAGEIDS 开始属性页 ID 列表。
END_PROPPAGEIDS 结束属性页 ID 列表。
PROPPAGEID 声明控件类的属性页。

DDP_CBIndex

在属性页的 DoDataExchange 函数中调用此函数可将整数属性与属性页的组合框中的当前选定项的索引同步。

void AFXAPI DDP_CBIndex(
    CDataExchange* pDX,
    int id,
    int& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的组合框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的组合框控件交换的控件属性的属性名称

注解

应在相应的 DDX_CBIndex 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_CBString

在属性页的 DoDataExchange 函数中调用此函数可将字符串属性的值与属性页上的组合框中的当前选定项同步。

void AFXAPI DDP_CBString(
    CDataExchange* pDX,
    int id,
    CString& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的组合框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的组合框字符串交换的控件属性的属性名称

备注

应在相应的 DDX_CBString 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_CBStringExact

在属性页的 DoDataExchange 函数中调用此函数可以同步与属性页上的组合框中的当前选定项完全匹配的字符串属性的值。

void AFXAPI DDP_CBStringExact(
    CDataExchange* pDX,
    int id,
    CString& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的组合框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的组合框字符串交换的控件属性的属性名称

备注

应在相应的 DDX_CBStringExact 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_Check

在属性页的 DoDataExchange 函数中调用此函数可将属性值与关联的属性页复选框控件同步。

void AFXAPI DDP_Check(
    CDataExchange* pDX,
    int id,
    int & member,
    LPCSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的复选框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的复选框控件交换的控件属性的属性名称

备注

应在相应的 DDX_Check 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_LBIndex

在属性页的 DoDataExchange 函数中调用此函数可将整数属性与属性页的列表框中的当前选定项的索引同步。

void AFXAPI DDP_LBIndex(
    CDataExchange* pDX,
    int id,
    int& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的列表框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的列表框字符串交换的控件属性的属性名称

备注

应在相应的 DDX_LBIndex 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_LBString

在属性页的 DoDataExchange 函数中调用此函数可将字符串属性的值与属性页上的列表框中的当前选定项同步。

void AFXAPI DDP_LBString(
    CDataExchange* pDX,
    int id,
    CString& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的列表框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的列表框字符串交换的控件属性的属性名称

备注

应在相应的 DDX_LBString 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_LBStringExact

在属性页的 DoDataExchange 函数中调用此函数可以同步与属性页上的列表框中的当前选定项完全匹配的字符串属性的值。

void AFXAPI DDP_LBStringExact(
    CDataExchange* pDX,
    int id,
    CString& member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的列表框控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的列表框字符串交换的控件属性的属性名称

备注

应在相应的 DDX_LBStringExact 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_PostProcessing

在属性页的 DoDataExchange 函数中调用此函数可以在保存属性值时完成将属性值从属性页传输到控件的操作。

void AFXAPI DDP_PostProcessing(CDataExchange * pDX);

参数

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

备注

应在完成所有数据交换函数后调用此函数。 例如:

void CMyAxPropPage::DoDataExchange(CDataExchange *pDX)
{
   DDP_Text(pDX, IDC_POSITIONEDIT, m_NeedlePosition, _T("NeedlePosition"));
   DDX_Text(pDX, IDC_POSITIONEDIT, m_NeedlePosition);
   DDV_MinMaxInt(pDX, m_NeedlePosition, 0, 3);
   DDP_PostProcessing(pDX);
}

要求

标头:afxctl.h

DDP_Radio

在控件的 DoPropExchange 函数中调用此函数可将属性值与关联的属性页单选按钮控件同步。

void AFXAPI DDP_Radio(
    CDataExchange* pDX,
    int id,
    int & member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的单选按钮控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的单选按钮控件交换的控件属性的属性名称

备注

应在相应的 DDX_Radio 函数调用之前调用此函数。

要求

标头:afxctl.h

DDP_Text

在控件的 DoDataExchange 函数中调用此函数可将属性值与关联的属性页控件同步。

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    BYTE & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    int & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    UINT & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    long & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    DWORD & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    float & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    double & member,
    LPCTSTR pszPropName);

void AFXAPI DDP_Text(
    CDataExchange* pDX,
    int id,
    CString & member,
    LPCTSTR pszPropName);

参数

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

id
与 pszPropName 指定的控件属性关联的控件的资源 ID

member
与 id 指定的属性页控件和 pszPropName 指定的属性关联的成员变量

pszPropName
要与 id 指定的控件交换的控件属性的属性名称

备注

应在相应的 DDX_Text 函数调用之前调用此函数。

要求

标头:afxctl.h

BEGIN_PROPPAGEIDS

开始控件的属性页 ID 列表的定义。

BEGIN_PROPPAGEIDS(class_name,  count)

参数

class_name
要为其指定属性页的控件类的名称。

count
控件类使用的属性页数。

注解

在为类定义成员函数的实现 (.cpp) 文件中,使用 BEGIN_PROPPAGEIDS 宏开始属性页列表,然后为每个属性页添加宏条目,并使用 END_PROPPAGEIDS 宏完成属性页列表。

有关属性页的详细信息,请参阅 ActiveX 控件:属性页一文。

要求

标头:afxctl.h

END_PROPPAGEIDS

结束属性页 ID 列表的定义。

END_PROPPAGEIDS(class_name)

参数

class_name
拥有属性页的控件类的名称。

要求

标头:afxctl.h

PROPPAGEID

添加一个供 OLE 控件使用的属性页。

PROPPAGEID(clsid)

参数

clsid
属性页的唯一类 ID。

备注

所有 PROPPAGEID 宏必须放在控件实现文件中的 BEGIN_PROPPAGEIDS 和 END_PROPPAGEIDS 宏之间。

要求

标头:afxctl.h

另请参阅

宏和全局函数