环境处理 “保存”、“ 另存为”和 “保存所有 ”命令。 当用户单击“文件”菜单上的“保存”、“另存为”或“全部保存”或关闭解决方案时,将执行以下过程。
保存、另存为和保存自定义编辑器的所有命令处理
以下步骤详细介绍了此过程:
对于 “保存 ”和 “另存为 ”命令,环境使用 SVsShellMonitorSelection 服务来确定活动文档窗口,从而应保存哪些项目。 在确定了活动文档窗口后,环境会在正在运行文档表中找到该文档的层次结构指针和项标识符(itemID)。 有关详细信息,请参阅 “运行文档表”。
对于“全部保存”命令,环境使用正在运行的文档表中的信息编译要保存的所有项的列表。
当解决方案收到 QueryStatus 调用时,它会遍历所选项目的集合(即由 SVsShellMonitorSelection 服务提供的多个选择)。
在所选内容中的每个项上,解决方案使用层次结构指针调用 IsItemDirty 方法,以确定是否应启用“保存”菜单命令。 如果一个或多个项很脏,则启用“保存”命令。 如果层次结构使用标准编辑器,则应该通过调用方法 IsDocDataDirty 来将脏状态查询委托给编辑器。
对于每个被标记为“脏”的选定项,解决方案利用层次结构指针在相应的层次结构上调用SaveItem 方法。
对于自定义编辑器,文档数据对象与项目之间的通信是私有的。 因此,在这两个对象之间处理任何特殊的持久性问题。
注释
如果实现自己的持久性,请确保调用该方法 QuerySaveFiles 以节省时间。 此方法检查以确保保存文件是安全的(例如,该文件不是只读的)。