有时,ActiveX 控件的属性数将超过在一个属性页上可以合理调整的属性。 在这种情况下,可以将属性页添加到 ActiveX 控件以显示这些属性。
本文讨论将新属性页添加到已至少有一个属性页的 ActiveX 控件。 有关添加股票属性页(字体、图片或颜色)的详细信息,请参阅 MFC ActiveX 控件:使用股票属性页一文。
以下过程使用 ActiveX 控件向导创建的示例 ActiveX 控件框架。 因此,类名和标识符对于此示例是唯一的。
有关在 ActiveX 控件中使用属性页的详细信息,请参阅以下文章:
-
注释
强烈建议新属性页遵循 ActiveX 控件属性页的大小标准。 股票图片和颜色属性页测量 250x62 对话框单位(DLU)。 标准字体属性页为 250x110 DLL。 ActiveX 控件向导创建的默认属性页使用 250x62 DLU 标准。
在项目中插入新的属性页模板
打开控件项目后,在项目工作区中打开资源视图。
右键单击“资源视图”以打开快捷菜单,然后单击“ 添加资源”。
展开 “对话框” 节点,然后选择 IDD_OLE_PROPPAGE_SMALL。
单击“ 新建 ”将资源添加到项目。
选择新的属性页模板以刷新 “属性” 窗口(在 资源视图中)。
输入 ID 属性的新值。 此示例使用 IDD_PROPPAGE_NEWPAGE。
单击工具栏上的“保存”。
将新模板与类相关联
打开类视图。
右键单击“类视图”以打开快捷菜单。
在快捷菜单中,单击“ 添加 ”,然后单击“ 添加类”。
这将打开 “添加类 ”对话框。
双击 MFC 类 模板。
在 MFC 类向导中的“类名称”框中,键入新对话框类的名称。 (在此示例中,
CAddtlPropPage
.)如果要更改文件名,请单击“ 更改”。 键入实现和头文件的名称,或接受默认名称。
在 “基类 ”框中,选择
COlePropertyPage
。在 “对话框 ID” 框中,选择 IDD_PROPPAGE_NEWPAGE。
单击 “完成 ”以创建类。
若要允许控件的用户访问此新属性页,请对控件的属性页 ID 宏部分进行以下更改(位于控件实现文件中):
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
请注意,必须将BEGIN_PROPPAGEIDS宏(属性页计数)的第二个参数从 1 增加到 2。
还必须修改控件实现文件()。要包含标头的 CPP 文件()。新属性页类的 H) 文件。
下一步涉及创建两个新的字符串资源,该资源将为新属性页提供类型名称和标题。
向属性页添加新字符串资源
打开控件项目后,打开资源视图。
双击 “字符串表 ”文件夹,然后双击要向其添加字符串的现有字符串表资源。
这会在窗口中打开字符串表。
选择字符串表末尾的空白行并键入字符串的文本或标题:例如,“其他属性页”。
这将打开一个 “字符串属性” 页,其中显示了 “标题 ”和 “ID ”框。 标题框包含您键入的字符串。
在 ID 框中,选择或键入字符串的 ID。 完成后按 Enter。
此示例对新属性页的类型名称使用 IDS_SAMPLE_ADDPAGE 。
对 ID 重复步骤 3 和步骤 4,对标题使用 IDS_SAMPLE_ADDPPG_CAPTION 和“附加属性页”。
在。新属性页类的 CPP 文件(在此示例中)
CAddtlPropPage
修改CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry
IDS_SAMPLE_ADDPAGE由 AfxOleRegisterPropertyPageClass 传递,如以下示例所示:BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister) { if (bRegister) return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), m_clsid, IDS_SAMPLE_ADDPAGE); else return AfxOleUnregisterClass(m_clsid, NULL); }
修改构造函数,以便将IDS_SAMPLE_ADDPPG_CAPTION传递给
COlePropertyPage
构造函数CAddtlPropPage
,如下所示:CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
进行必要的修改后,请重新生成项目,并使用测试容器测试新属性页。 请参阅 使用测试容器测试属性和事件 了解有关如何访问测试容器的信息。