CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

相关分类

每个文档的数据

2022-12-31 19:38| 发布者: admin| 查看: 985| 评论: 0|来自: AutoCAD

应用程序无法将每个文档的数据保留在全局变量或静态变量中。这包括对象、对象、值、标题变量值、文档变量值、选择集和其他特定于文档的信息。如果应用程序在多个并发编辑会话中运行,则全局变量和静态变量中每个文档数据的任何匹配项都可能损坏。AcDbDatabaseAcDbObjectAcDbObjectId

若要避免数据损坏,可以将命令行为和数据封装到类中。可以为每次调用命令实例化类的实例。当命令获取特定于文档的数据时,它会保留该数据的每个实例副本。

另一种解决方案是将所有全局和静态数据封装到结构或类中。为每个文档实例化数据的副本。在应用程序中的每个入口点设置指向相应实例的本地指针。然后使用本地指针访问每个文档的数据。使用反应器在封装数据的实例之间切换。documentActivated()

您可以根据需要创建每个文档的数据,也可以在首次加载应用程序时创建这些数据。如果根据需要创建,则在调用应用程序的注册命令或反应器时,将确定当前文档并进行查询以获取文档的数据。如果未找到,则在此时创建。

若要在首次加载应用程序时创建每个文档的数据,请使用 anin thehandler 获取所有打开文档的列表。然后,用于了解何时为加载应用程序后打开的文档创建其他每个文档的数据。AcApDocumentIteratorAcRx::kInitAppMsgAcApDocManagerReactor::documentCreated()

无论使用哪种方法来分配每个文档的数据,应用程序都必须使用反应器才能知道何时删除数据。应用程序还应在处理程序期间删除剩余数据。AcApDocManagerReactor::documentToBeDestroyed()AcRx::kUnloadAppMsg


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 13:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部