CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2025 开发者帮助

实现每个实例的动态属性

2024-5-18 19:25| 发布者: admin| 查看: 142| 评论: 0|原作者: admin|来自: AutoCAD

实现每个实例的动态属性

除了创建应用于 的所有实例的动态属性外,还可以将动态属性应用于特定对象。以下接口提供了定义每个实例动态属性的方法:AcRxClass

  • IPropertySource
  • OPMPerInstancePropertySources
  • OPMPerInstancePropertyExtension
  • OPMPerInstancePropertyExtensionFactory

这些接口与以下全局宏一起使用:

  • GET_OPM_PERINSTANCE_SOURCES
  • GET_OPM_PERINSTANCE_EXTENSION_PROTOCOL
  • GET_OPM_PERINSTANCE_CREATE_PROTOCOL

应用程序通过在一个或多个 COM 对象上实现接口来管理每个实例的动态属性。这些 COM 对象的实例存储在“属性”选项板的协议扩展框架中。IPropertySource

当“属性”选项板查询选定对象的属性时,它会将该对象的指针传递到其框架中每个实例的方法。如果实现检测到指向限定对象的指针,它将生成并返回动态属性。这些生成的动态属性是 或 的实例。IUnknownGetProperties()IPropertySourceGetProperties()IDynamicPropertyIDynamicProperty2

每个实例都有一个唯一的名称,它通过其方法提供。AutoCAD 将所有这些名称映射到类的单个全局实例中。您可以使用宏访问此实例。IPropertySourceget_Name()OPMPerInstancePropertySourcesGET_OPM_PERINSTANCE_SOURCES()

若要在全局列表中注册属性源,首先必须实例化属性源类。当您有指向其实例的指针时,请调用该函数,并传入属性源的名称和实例指针。以下伪代码演示了此技术:OPMPerInstancePropertySources::SetPropertySourceAt()

CMyPropSource* pPropSrc = new CMyPropSource(); // implements
                                               // IPropertySource
BSTR* pName;
hr = pPropSrc->get_Name(pName);
if SUCCEEDED(hr)
GET_OPM_PERINSTANCE_SOURCES()->SetPropertySourceAt(pName, pPropSrc);

若要在“属性”选项板中可用,属性源必须与对象相关联。该类执行此服务。实例对每个实例属性的作用与对象对类范围动态属性的作用类似:它们在动态数据与其动态数据之间建立链接。对于每个对象,您可以使用宏检索实例。在返回的指针上调用该方法以注册对象。此机制显示在以下伪代码中:AcRxClassOPMPerInstancePropertyExtensionOPMPerInstancePropertyExtensionIPropertyManagerAcRxClassAcRxClassOPMPerInstancePropertyExtension GET_OPM_PERINSTANCE_EXTENSION_PROTOCOL()OPMPerInstancePropertyExtension::AddObjectPropertySourceName()IPropertySource

AcRxClass* pAcrxClass = AcDbMyEnt::desc();
GET_OPM_PERINSTANCE_EXTENSION_PROTOCOL(pAcrxClass)->
AddObjectPropertySourceName(pName);

和注册之间的主要区别在于注册的内容。动态属性本身已注册到对象中。注册后,这些属性将可用于关联 .每个实例的动态属性不会注册到任何对象。相反,实例将注册到实例中。该对象在运行时根据请求生成每个实例的属性,因为它认为合适。IPropertyManager2IPropertySourceIPropertyManager2AcRxClassIPropertySourceOPMPerInstancePropertyExtensionIPropertySource

父主题:

  1. 实现属性

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2025-3-5 17:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部