从属性扩展模板类派生 
为了减少实现工作量,从接口派生 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的
 
- 
该物业的DISPID 
 
- CTID公司
 
- 
属性的类别 ID,该 ID 在应用程序的字符串表资源中定义,由ICategorizeProperties::MapPropertyToCategory() 
 
- ctNameID
 
- 
属性的类别名称字符串 
 
- 元素ID
 
- 
展开的属性名称列表(分号分隔),由IOPMPropertyExpander::GetElementStrings() 
这些字符串允许单个属性扩展为多个子属性。例如,轻量级折线的折点扩展为两个值:X 和 Y。在这种情况下,展开的属性名称列表将为“顶点 X;顶点 Y“。为可展开属性提供的字符串数应与参数中指定的数目匹配。grp 
 
- predefID
 
- 
属性的预定义字符串列表(分号分隔)的 ID,由IPerPropertyBrowsing::GetPredefinedStrings() 
此列表指定单个属性的可能字符串值。这些字符串显示在下拉列表中。例如,如果此值引用的字符串为“Yes;“否”、“是”和“否”值显示在下拉列表中。用户只能从列表中选择一个。 
 
- 瓦尔斯
 
- 
属性的预定义值列表(分号分隔),由IPerPropertyBrowsing::GetPredefinedValues() 
这些数值对应于预定义字符串列表中的每个字符串。例如,如果为“是;否“,此值为”1;0“,则”Yes“的值为 1,”No“的值为 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, "")
当用户编辑枚举测试属性时,下拉列表将包含“One”和“Two”,它们会将属性分别设置为 1 或 2。 
 
- 玻璃钢
 
- 
展开属性名称分组中的元素数,由IOPMPropertyExpander::GetElementGrouping() 
此数字应等于字符串列表中指定的字符串数。例如,对于 3D 点,此值为 3,因为单个点有 X、Y 和 Z 值。对于 2D 点,它是 2。elementsID 
 
- 编辑
 
- 
Show-property 覆盖,指定属性是可编辑的还是只读的 
 
- 其他
 
- 
CLSID 用于其他...组合项对话框(未使用) 
 
- CLSID公司
 
- 
对话框的 CLSIDIPerPropertyBrowsing 
控制单击省略号按钮时显示的对话框。使用“属性页”的属性示例包括填充图案名称属性和超链接属性。 
 
- 椭圆Txt
 
- 
对话框的显示字符串IPerPropertyBrowsing 
此字符串与“属性页”的省略号按钮一起显示。例如,选择填充对象时的“ANSI31”填充图案名称属性。 
 
 
 
如果需要使用接口,还提供了模板类。这可以与模板类结合使用,模板类仅实现 and 接口。IAcPiCategorizePropertiesIAcPiCategorizePropertiesImplIOPMPropertyExtensionImpl2IOPMPropertyExtensionIPerPropertyBrowsing 
    
 |