运行文档表 (RDT)维护计数打开文档,并设置任何编辑锁。 您可以在文档中放置编辑器锁定 RDT,当以编程方式在后台版,则将看到该快照时的用户在文档窗口中打开文档。 此函数由通过图形用户界面修改多个文件的设计器是最常用的。
文档锁持有者方案
文件 “a”对文件 “b”的依赖项
考虑您实现标准编辑 “A”文件类型 “a”的情况,因此,每个文件类型 “a”具有引用 (或依赖项) 文件类型 “b”。 标准编辑 “B”为文件类型存在 “b”。 在编辑 “A”打开文件 “a”时它检索对相应文件 “b”。 文件 “b”未显示,但是,编辑器 “A”无法更改它。 edit “A”获取对文档数据文件 “b”从 FindAndLockDocument 方法并维护在文件 “b”的自定义编辑锁。 在编辑 “A”完成修改的文件 “b”后可以通过调用 UnlockDocument 方法减去在文件 “b”的编辑锁计数。 调用,则使用参数 dwRDTLockType 的 FindAndLockDocument 方法设置为 RDT_NoLock,则可以忽略此步骤。
不同的编辑器打开文件 “b”
在”编辑器 “中打开文件 “a B”情况下,编辑 “A”尝试打开它时,有两种不同的情形处理:
如果文件 “b”已在兼容编辑器中,使用 RegisterDocumentLockHolder 方法,您必须具有编辑器 “A”注册文档编辑该文件 “b”锁。 在编辑器 “A”完成修改的文件 “b”后,使用 UnregisterDocumentLockHolder 方法,非注册文档编辑锁。
如果文件 “b”已用一个不兼容的方式,可以通过编辑 “A” fail 允许文件所尝试的开始 “b”,或者使用视图部分与 edit “A”打开并显示相应的错误消息。 使用编辑器 “A”,错误消息应提示用户关闭文件 “b”在不兼容的编辑和重新打开文件 “a”。 您还可以实现 Visual Studio SDK 方法 QueryCloseRunningDocument 提示用户关闭已在不兼容的编辑器的文件 “b”。 如果用户关闭文件 “b”,打开文件 “a”编辑 “A”通常继续。
附加文档编辑锁定注意事项
获得不同的行为,如果编辑 “A”是比您会有文档编辑该文件 “b”的锁定唯一的版本,如果编辑 “B”还保存文档编辑该文件 “b”锁。 在 Visual Studio, 类设计器 不保持关联的代码文件中的编辑锁定可视化设计器的示例。 也就是说,如果用户同时打开类关系图在 " 设计 " 视图中打开和关联的代码文件,属性,并且,如果用户修改代码文件,但不保存更改,这些更改也会丢失到类图 (.cd) 文件。 如果 类设计器 具有一个包含文档中编辑代码文件中的锁,用户未请求保存更改,当关闭代码文件中。 ,在用户关闭 类设计器后, IDE 要求用户保存更改。 保存的更改将反映在两个文件中。 如果 类设计器 和持有的代码文件编辑文档中编辑代码文件中的锁,则会提示该用户保存,当关闭代码文件或窗体时。 此时保存的更改将反映在窗体和代码文件中。 有关类图的更多信息,请参见 使用类图(类设计器)。
请注意,如果在非编辑的文档需要放置编辑器锁定,则必须实现 IVsDocumentLockHolder 接口。
许多时修改代码文件的编程的 UI 设计器对多个文件的更改。 在这种情况下一个或多个保存通过 是否希望保存对以下项的更改? 对话框文档的 SaveItemsViaDlg 方法处理。