保存自定义文档

环境处理 “保存”、“ 另存为”和 “保存所有 ”命令。 当用户单击“文件”菜单上的“保存”、“另存为”或“全部保存”或关闭解决方案时,将执行以下过程。

客户编辑器保存

保存、另存为和保存自定义编辑器的所有命令处理

以下步骤详细介绍了此过程:

  1. 对于 “保存 ”和 “另存为 ”命令,环境使用 SVsShellMonitorSelection 服务来确定活动文档窗口,从而应保存哪些项目。 在确定了活动文档窗口后,环境会在正在运行文档表中找到该文档的层次结构指针和项标识符(itemID)。 有关详细信息,请参阅 “运行文档表”。

    对于“全部保存”命令,环境使用正在运行的文档表中的信息编译要保存的所有项的列表。

  2. 当解决方案收到 QueryStatus 调用时,它会遍历所选项目的集合(即由 SVsShellMonitorSelection 服务提供的多个选择)。

  3. 在所选内容中的每个项上,解决方案使用层次结构指针调用 IsItemDirty 方法,以确定是否应启用“保存”菜单命令。 如果一个或多个项很脏,则启用“保存”命令。 如果层次结构使用标准编辑器,则应该通过调用方法 IsDocDataDirty 来将脏状态查询委托给编辑器。

  4. 对于每个被标记为“脏”的选定项,解决方案利用层次结构指针在相应的层次结构上调用SaveItem 方法。

    对于自定义编辑器,文档数据对象与项目之间的通信是私有的。 因此,在这两个对象之间处理任何特殊的持久性问题。

    注释

    如果实现自己的持久性,请确保调用该方法 QuerySaveFiles 以节省时间。 此方法检查以确保保存文件是安全的(例如,该文件不是只读的)。