属性页 (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 | 将控件属性页中的控件与控件的属性相链接。 此函数处理多种不同类型的属性,例如 double 、short 、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