MFC ActiveX 控件:属性页

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

重要

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

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

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

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

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

Properties dialog box for Circ3.
“属性”对话框

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

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

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

实现默认属性页

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

实现属性页(在本例中是默认属性页)的过程分为三步:

实现属性页

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

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

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

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

向属性页添加控件

向属性页添加控件的步骤

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

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

  3. 打开 IDD_PROPPAGE_SAMPLE 对话框。

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

  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 函数,将属性页的 m_caption 成员变量与 Caption 相关联。

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

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

属性页函数

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

另请参阅

MFC ActiveX 控件
COlePropertyPage 类