MFC ActiveX 控件:添加另一个自定义属性页
有时, Activex 控件比在一个特性网页具有多个属性可以合理装载。在这种情况下,可以将特性添加到 Activex 控件显示这些属性。
本文讨论添加新的属性页已至少有一个属性页的 Activex 控件。有关添加常用属性页的更多信息 (字体、图片或颜色),请参见中的文章 MFC Activex 控件:使用常用属性页。
下面的过程使用 Activex 控件向导创建的一个示例 Activex 控件结构。因此,类名称和标识符在本示例中是唯一的。
有关使用属性页的更多信息在 Activex 控件,请参见以下文章:
-
说明 强烈建议新的属性页遵循 Activex 控件属性页的大小条件。股票图片和颜色属性调用度量 250x62 对话框单位 (DLU)。标准字体属性页是 250x110 DLU。Activex 控件向导创建的默认属性页使用 250x62 DLU 条件。
插入新的属性页模板添加到项目中
打开控件的项目,请在项目工作区中打开资源视图。
右击在 " 资源视图 " 中打开快捷菜单并单击 添加资源。
外接 对话框 节点,然后选择 IDD_OLE_PROPPAGE_SMALL。
单击 New 将资源添加到项目中。
选择新属性页模板刷新 " 属性 " 窗口。
输入 ID 属性的新值。此示例使用 IDD_PROPPAGE_NEWPAGE。
在工具栏上单击**“保存”**。
将新的模板与类
打开类视图。
右击在类视图中打开快捷菜单。
从快捷菜单中单击“添加”,然后单击“添加类”。
这将打开 添加类 对话框。
双击 MFC Class 模板。
在 MFC 类向导的 类名 框中,键入新节点的名称对话框类。(在此示例中, CAddtlPropPage。)
如果要更改文件的名称,单击 更改。输入名称您的实现和标头文件或接受默认名称。
在 Base Class 框中,选择 COlePropertyPage。
在 Dialog ID 框中,选择 IDD_PROPPAGE_NEWPAGE。
单击创建类的 完成 。
若要允许访问这个新属性页上的控件的用户访问,请对控件的属性页 ID 宏部分进行以下更改 (位于控件实现文件):
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
请注意您必须添加 BEGIN_PROPPAGEIDS 宏 (属性页计数) 从 1 到 2. 的第二个参数。
您还必须修改控件实现文件 (.CPP) 文件包含该标头 (。H) 新属性页的类文件。
下一个步骤包括用于创建新属性页将提供一个类型名称和说明的两个新字符串资源。
添加新的字符串资源。属性页
打开控件的项目中,打开资源视图。
双击 String Table 文件夹然后双击要添加字符串的现有字符串表资源。
此时会打开窗口中的字符串表。
选择空白行在字符串表结尾处并键入文本或声明,该字符串:例如, “附加属性页”。
这将打开显示 标题 和 ID 框中 String Properties 页。标题 框包含您键入的字符串。
在 ID 框中,选择或键入该字符串的 ID。,完成后,请按 Enter。
此示例为新属性页的类型名称使用 IDS_SAMPLE_ADDPAGE 。
重复使用 IDS_SAMPLE_ADDPPG_CAPTION 的步骤 3 和步骤 4 ID 和 “附加属性页”图例的。
在新属性页类 .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); }
按如下方式修改 CAddtlPropPage 构造函数,以便 IDS_SAMPLE_ADDPPG_CAPTION 传递给 COlePropertyPage 构造函数,例如:
CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
在进行必要的修改重新生成项目并使用测试容器新的属性页。有关如何访问测试容器的信息,请参见用测试容器测试属性和事件。