有时,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::UpdateRegistryIDS_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) { }
进行必要的修改后,请重新生成项目,并使用测试容器测试新属性页。 请参阅 使用测试容器测试属性和事件 了解有关如何访问测试容器的信息。