属性页允许 ActiveX 控件用户查看和更改 ActiveX 控件属性。 通过调用控件属性对话框来访问这些属性,该对话框包含一个或多个属性页,这些属性页提供自定义的图形界面,用于查看和编辑控件属性。
重要
ActiveX 是一项不推荐用于新开发的旧技术。 有关取代 ActiveX 的新式技术的详细信息,请参阅 ActiveX 控件。
ActiveX 控件属性页以两种方式显示:
调用控件的属性谓词(OLEIVERB_PROPERTIES)时,该控件将打开一个模式属性对话框,其中包含控件的属性页。
容器可以显示其自己的无模式对话框,显示所选控件的属性页。
属性对话框(下图所示)包含一个用于显示当前属性页的区域、用于在属性页之间切换的选项卡,以及执行常见任务的按钮集合,例如关闭属性页对话框、取消所做的任何更改或立即对 ActiveX 控件应用任何更改。
“属性”对话框
本文介绍与在 ActiveX 控件中使用属性页相关的主题。 这些包括:
有关在 ActiveX 控件中使用属性页的详细信息,请参阅以下文章:
有关在 MFC 应用程序中使用 ActiveX 控件以外的属性表的信息,请参阅 属性表。
实现默认属性页
如果使用 ActiveX 控件向导创建控件项目,ActiveX 控件向导将为派生自 COlePropertyPage 类的控件提供默认属性页类。 最初,此属性页为空,但你可以向其添加任何对话框控件或控件集。 由于 ActiveX 控件向导默认仅创建一个属性页类,因此必须使用类视图创建其他属性页类(也派生自 COlePropertyPage
)。 有关此过程的详细信息,请参阅 MFC ActiveX 控件:添加另一个自定义属性页。
实现属性页(在本例中,默认值)是一个三步过程:
实现属性页
将
COlePropertyPage
-derived 类添加到控件项目。 如果使用 ActiveX 控件向导(在本例中所示)创建了项目,则默认属性页类已存在。使用对话框编辑器将任何控件添加到属性页模板。
DoDataExchange
自定义 -derived 类的COlePropertyPage
函数,以在属性页控件和 ActiveX 控件之间交换值。
例如,以下过程使用简单控件(名为“Sample”)。 示例是使用 ActiveX 控件向导创建的,仅包含 stock Caption 属性。
向属性页添加控件
将控件添加到属性页
打开控件项目后,打开资源视图。
双击 对话框 目录图标。
打开IDD_PROPPAGE_SAMPLE对话框。
ActiveX 控件向导将项目的名称追加到对话框 ID 的末尾,在本例中为“示例”。
将所选控件从工具箱拖放到对话框区域。
对于此示例,文本标签控件“Caption:”和具有IDC_CAPTION标识符的编辑框控件已足够。
单击工具栏上的“ 保存 ”以保存更改。
现在已修改用户界面,需要将编辑框与 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 |
具有控件属性的文本。 |