为了减少实现工作量,从接口派生 COM 包装器类通常是有意义的。从此接口派生提供了 、 和接口的“样板”实现。使用您通过宏提供的信息来实现这些接口。IOPMPropertyExtensionImplIOPMPropertyExtensionICategorizePropertiesIPerPropertyBrowsing IOPMPropertyExtensionImplOPMPROP_MAP
以下宏在opmimp.h文件中声明:OPMPROP_MAP
-
BEGIN_OPMPROP_MAP
-
OPMPROP_ENTRY
-
OPMPROP_CAT_ENTRY
-
OPMPROP_DESC_ENTRY
-
OPMPROP_PREDEFINED_ENTRY
-
OPMPROP_ELEMENT_ENTRY
-
OPMPROP_PAGE
这些宏接受以下部分或全部参数:
- nDesID
-
属性的说明字符串 ID
- DPID
-
该物业的鄙视
- 反恐委员会
-
属性的类别 ID,在应用程序的字符串表资源中定义,由ICategorizeProperties::MapPropertyToCategory()
- ctNameID
-
属性的类别名称字符串
- 元素标识
-
扩展的属性名称列表(分号分隔),由IOPMPropertyExpander::GetElementStrings()
这些字符串允许单个属性扩展为多个子属性。例如,轻量级折线的顶点扩展为两个值 X 和 Y。在这种情况下,展开的属性名称列表将为“顶点 X;顶点Y”。为可扩展属性提供的字符串数应与参数中指定的字符串数匹配。grp
- 预定义标识
-
属性的预定义字符串列表(分号分隔)的 ID,由IPerPropertyBrowsing::GetPredefinedStrings()
此列表指定单个属性的可能字符串值。这些字符串显示在下拉列表中。例如,如果此值引用的字符串为“是;否“、”是“和”否“值显示在下拉列表中。用户只能从列表中选择一个。
- 瓦尔斯
-
属性的预定义值列表(分号分隔),由IPerPropertyBrowsing::GetPredefinedValues()
这些数值对应于预定义字符串列表中的每个字符串。例如,ifis “是;否“,此值为”1;0“,则”是“的值为 1,”否“的值为 0。在“特性”选项板中选择“是”或“否”时,COM 包装器的方法将分别接收值 1 或 0。predefIDput_xxx()
若要声明枚举属性控件,应设置为以分号分隔的字符串符号列表的 ID,并设置为分配给相应符号的值的分号分隔列表。以下示例使用字符串表资源 ID IDS_ENUMSTRINGS,该 ID 已设置为字符串“One;项目字符串表中的 Two“:predefIDvalspredefID
OPMPROP_ENTRY(IDS_EnumTest, 7, PROPCAT_Test,
IDS_CAT_NAME_Test, 0, IDS_ENUMSTRINGS,
_ACRX_T("1;2"), 0, 1, IID_NULL, IID_NULL, "")
当用户编辑 Enum Test 属性时,下拉列表将包含“One”和“Two”,这会将属性分别设置为 1 或 2。
- 玻璃钢
-
展开的属性名称分组中的元素数,由IOPMPropertyExpander::GetElementGrouping()
此数字应等于字符串列表中指定的字符串数。例如,对于 3D 点,此值为 3,因为单个点有 X、Y 和 Z 值。对于 2D 点,它是 2。elementsID
- 编辑
-
显示属性覆盖,指定属性是可编辑还是只读
- 其他
-
CLSID为其他...组合项对话框(未使用)
- 中西德
-
CLSID for the dialogIPerPropertyBrowsing
控制单击省略号按钮时显示的对话框。使用属性页的属性示例包括填充图案名称属性和超链接属性。
- 省略号Txt
-
对话框的显示字符串IPerPropertyBrowsing
此字符串与“属性页”的省略号按钮一起显示。例如,选择图案填充对象时的“ANSI31”填充图案名称属性。
如果需要使用接口,还提供了模板类。这可以与模板类结合使用,后者仅实现 theand接口。IAcPiCategorizePropertiesIAcPiCategorizePropertiesImplIOPMPropertyExtensionImpl2IOPMPropertyExtensionIPerPropertyBrowsing
|