MFC ActiveX 控件:属性页

属性页允许 ActiveX 控件用户查看和更改 ActiveX 控件属性。 通过调用控件属性对话框来访问这些属性,该对话框包含一个或多个属性页,这些属性页提供自定义的图形界面,用于查看和编辑控件属性。

重要

ActiveX 是一项不推荐用于新开发的旧技术。 有关取代 ActiveX 的新式技术的详细信息,请参阅 ActiveX 控件

ActiveX 控件属性页以两种方式显示:

  • 调用控件的属性谓词(OLEIVERB_PROPERTIES)时,该控件将打开一个模式属性对话框,其中包含控件的属性页。

  • 容器可以显示自己的无模式对话框,其中显示了所选控件的属性页。

属性对话框(下图所示)包含一个用于显示当前属性页的区域、用于在属性页之间切换的选项卡,以及执行常见任务的按钮集合,例如关闭属性页对话框、取消所做的任何更改或立即对 ActiveX 控件应用任何更改。

Circ3 的属性对话框。
“属性”对话框

本文介绍与在 ActiveX 控件中使用属性页相关的主题。 这些包括:

有关在 ActiveX 控件中使用属性页的详细信息,请参阅以下文章:

有关在 MFC 应用程序中使用 ActiveX 控件以外的属性表的信息,请参阅 属性表

实现默认属性页

如果使用 ActiveX 控件向导创建控件项目,ActiveX 控件向导将为派生自 COlePropertyPage 类的控件提供默认属性页类。 最初,此属性页为空,但你可以向其添加任何对话框控件或控件集。 由于 ActiveX 控件向导默认仅创建一个属性页类,因此必须使用类视图创建其他属性页类(也派生自 COlePropertyPage)。 有关此过程的详细信息,请参阅 MFC ActiveX 控件:添加另一个自定义属性页

实现属性页(在本例中,默认值)是一个三步过程:

实现属性页

  1. 将一个COlePropertyPage派生类添加到控件项目。 如果使用 ActiveX 控件向导(在本例中所示)创建了项目,则默认属性页类已存在。

  2. 使用对话框编辑器将任何控件添加到属性页模板。

  3. 自定义 DoDataExchange 派生类的 COlePropertyPage 函数,以在属性页控件与 ActiveX 控件之间交换值。

例如,以下过程使用简单控件(名为“Sample”)。 示例是使用 ActiveX 控件向导创建的,仅包含 stock Caption 属性。

向属性页添加控件

将控件添加到属性页

  1. 打开控件项目后,打开资源视图。

  2. 双击 对话框 目录图标。

  3. 打开IDD_PROPPAGE_SAMPLE对话框。

    ActiveX 控件向导将项目的名称追加到对话框 ID 的末尾,在本例中为“示例”。

  4. 将所选控件从工具箱拖放到对话框区域。

  5. 对于此示例,文本标签控件“Caption:”和具有IDC_CAPTION标识符的编辑框控件已足够。

  6. 单击工具栏上的“ 保存 ”以保存更改。

现在已修改用户界面,需要将编辑框与 Caption 属性链接。 在以下部分通过编辑 CSamplePropPage::DoDataExchange 函数来完成这项操作。

自定义 DoDataExchange 函数

属性页函数 CWnd::DoDataExchange 允许将属性页上的值与控件中属性的实际值进行链接。 若要建立链接,必须将相应的属性页字段映射到各自的控件属性。

这些映射是使用属性页 DDP_ 函数实现的。 DDP_函数的工作方式类似于标准 MFC 对话中使用的DDX_函数,但有一个例外。 除了对成员变量的引用之外, DDP_ 函数采用控件属性的名称。 下面是属性页的 DoDataExchange 函数中的典型条目。

DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));

此函数使用函数将属性页DDP_TEXT成员变量与 Caption 相关联。

插入属性页控件后,需要使用上述函数在属性页控件、IDC_CAPTION和实际控件属性 Caption DDP_Text 之间建立链接。

属性页 可用于其他对话框控件类型,例如复选框、单选按钮和列表框。 下表列出了属性页函数集 DDP_ 及其用途:

属性页函数

函数名称 使用此功能来链接
DDP_CBIndex 具有控件属性的组合框中所选字符串的索引。
DDP_CBString 组合框中具有控件属性的选定字符串。 所选字符串可以以与属性值相同的字母开头,但不需要完全匹配。
DDP_CBStringExact 组合框中具有控件属性的选定字符串。 所选字符串和属性的字符串值必须完全匹配。
DDP_Check 具有控件属性的复选框。
DDP_LBIndex 具有控件属性的列表框中所选字符串的索引。
DDP_LBString 列表框中具有控件属性的选定字符串。 所选字符串可以以与属性值相同的字母开头,但不需要完全匹配。
DDP_LBStringExact 列表框中具有控件属性的选定字符串。 所选字符串和属性的字符串值必须完全匹配。
DDP_Radio 具有控件属性的单选按钮。
DDP_Text 具有控件属性的文本。

另请参阅

MFC ActiveX 控件
COlePropertyPage 类