若要使用瞬态反应器,请从以下基类之一派生一个新类:
- AcApDocManagerReactor
-
监视各种文档管理事件。
- AcApLongTransactionReactor
-
监视与长期事务关联的操作。请参阅多头交易。
- AcDbDatabaseReactor
-
监视数据库对象的创建、修改和擦除。
- AcDbLayoutManagerReactor
-
监视与布局管理器相关的事件。请参阅布局类概述。
- AcDbObjectReactor
-
监视与特定数据库对象相关的事件 — 创建、修改、擦除。
- AcDbEntityReactor
-
监视特定于实体的额外事件,例如修改后的图形。
- AcEdInputContextReactor
-
监视与用户输入提示相关的事件。请参阅输入上下文事件。
- AcEdSSGetFilter/AcEdSSGetFilter2
-
监视选择集操作。
- AcRxDLinkerReactor
-
监视 ObjectARX 应用程序的加载和卸载。
- AcRxEventReactor
-
监视 ObjectARX 和 ObjectDBX 通用的事件
™
.
- AcEditorReactor/AcEditorReactor2
-
监视特定于 AutoCAD 的事件,例如命令和 AutoLISP评估。
®
- AcTransactionReactor
-
监视与事务管理器相关的事件 - 事务的启动、中止或结束。
- AcPublishReactor
-
监视关键发布事件。
- AcPublishUIReactor
-
监视“发布选项”对话框。
- AcRx协议反应器
-
通过协议扩展机制监视事件。参见协议反应器框架。
- AcDMMReactor
-
监视“发布到 DWF”操作。
- AcTcCatalogItemReactor
-
监视添加到目录项、从目录项中删除或分离的子项。
- AcDbSummaryInfoReactor
-
监视对摘要信息的更改。
在大多数情况下,只需要标准的C++技术来创建新的瞬态反应堆类别。ObjectARX 宏为新的反应器类创建类描述符对象,通常不用于从这些反应器类派生。
每个父类都包含一组虚拟通知函数,这些函数可由新派生的类实现。例如,该类包含以下响应与对象相关的事件的通知函数:AcDbObjectReactor
-
cancelled()
-
copied()
-
erased()
-
goodbye()
-
openedForModify()
-
modified()
-
subObjModified()
-
modifyUndone()
-
modifiedXData()
-
unappended()
-
reappended()
-
objectClosed()
这些函数中的每一个都需要一个指向事件通知程序的指针。基类具有所有这些函数的实现。在派生的反应器类中,实现与感兴趣的通知类型对应的函数。然后实例化反应器并使用函数将其添加到任意数量的数据库对象中。若要在通告程序对象中添加或删除瞬态反应器,可以在任何状态(读取、写入或通知)下打开该对象。撤消机制不监视添加或删除瞬态反应器。(对于持久性反应器,必须打开通知程序对象进行写入,并且添加或删除反应器由撤消机制监视。由于您创建了瞬态反应器对象,因此您还负责删除它。AcDbObjectReactorNULLAcDbObject::addReactor()
例如,当一个对象被擦除时,它会在其列表中的每个反应器上调用相应的通知函数。如果已为 Reactor 实现了 anfunction,则该函数将由数据库对象调用,然后您可以在擦除对象时执行适用于您的应用程序的任何特殊操作。erased()erased()
|