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-derived 类添加到控件项目。 如果使用 ActiveX 控件向导(在本例中所示)创建了项目,则默认属性页类已存在。

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

  3. DoDataExchange自定义 -derived 类的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::D oDataExchange 函数允许将属性值与控件中属性的实际值链接。 若要建立链接,必须将相应的属性页字段映射到各自的控件属性。

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

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

此函数使用DDP_TEXT函数将属性页m_caption成员变量与 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 类