马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 AutoCAD中,所有的文档在被修改之前必须被锁定,但是在查询文档数据时是不需要锁定的,你可以随时查询任何一个打开的文档的数据。有时在你自己查询 一个文档数据时,为了防止别的程序临时修改该文档的数据,也需要把文档锁定。像AutoCAD的各种命令,以及ObjectARX的命令和 AutoLISP函数都已经处理了基本的文档锁定,所以不需要太关心。但是非模态对话框、工具条以及任何需要在活动文档之外工作的命令都需要自己处理文档 锁定。
锁定文档通过文档管理器AcApDocumentManager来完成,在程序中可通过acDocManager()宏来得到该对象的一个实例。
锁定文档的函数:
virtual Acad::ErrorStatus
AcApDocumentManager::lockDocument(
AcApDocument* pDoc,
AcAp::DocLockMode unnamed = AcAp::kWrite,
const char* pGlobalCmdName = NULL,
const char* pLocalCmdName = NULL,
bool prompt = true) = 0;
pDoc----需要锁定的文档
unnamed---- 需要锁定的状态,所有状态有:AcAp::kRead--以独占的方式锁定读取,不允许其他程序以写的方式锁定,这种方法是用来保护当前读取的数据不被其 他应用程序所修改。AcAp::kWrite--默认锁定方式,多种可执行上下文可同时共享锁定,一个命令可以对文档进行修改,当该命令暂停的时候,其他 命令也可以对其进行修改。AcAp::kXWrite--保证你的可执行上下文对该文档有着独占的修改权利。
pGlobalCmdName----需要锁定该文档进行操作的全局命令名称,通常锁定文档是由一个命令来发起的,一般情况下可以为空
pLocalCmdName----该命令的本地名称
prompt----是否需要在不能锁定该文档时提示,有时当你需要锁定一个文档时,可能该文档已被别的程序锁定了,如果为true,则会为你提示,告诉你不能锁定该文档
解除锁定的函数:
virtual Acad::ErrorStatus
AcApDocumentManager::unlockDocument(
AcApDocument* pDoc) = 0;
pDoc --输入需要解除锁定的文档
一个lockDocument函数必须对应一个unlockDocument函数才行。
|