CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2022 开发者帮助

每个文档的数据

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

每个文档的数据

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

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

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

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

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

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

父主题:

  1. MDI 感知级别

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 16:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部