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