儲存自訂文件
環境會處理 [儲存]、[另存新檔] 和 [全部儲存] 命令。 當使用者從 [檔案] 功能按一下 [儲存]、[另存新檔] 或 [全部儲存] 或關閉方案時,會導致 [全部儲存],就會發生以下流程。
自訂編輯器的 [儲存]、[另存新檔] 和 [全部儲存] 命令處理
以下步驟詳細說明此流程:
對於 [儲存] 和 [另存新檔] 命令,環境會使用 SVsShellMonitorSelection 服務來判斷使用中的文件視窗,以及應該儲存哪些項目。 一旦知道使用中的文件視窗,環境就會在執行的文件資料表中尋找文件的階層指標和項目識別碼 (itemID)。 如需詳細資訊,請參閱執行文件資料表。
對於 [全部儲存] 命令,環境會使用執行中的文件資料表內的資訊來編譯要儲存的所有項目清單。
當方案收到 QueryStatus 呼叫時,它會逐一查看一組選取的項目 (也就是 SVsShellMonitorSelection 服務公開的多個選取)。
在選取範圍中的每個項目上,方案會使用階層指標呼叫 IsItemDirty 方法來判斷是否應該啟用 [儲存] 功能表命令。 如果一或多個專案已變更,則會啟用 [儲存] 命令。 如果階層使用標準編輯器,則階層會藉由呼叫 IsDocDataDirty 方法,將已變更狀態的查詢委派給編輯器。
在已變更的每個選取項目上,方案會使用階層指標在適當的階層上呼叫 SaveItem 方法。
在自訂編輯器的情況下,文件資料物件與專案之間的通訊是私人用的。 因此,這兩個物件之間會處理任何特殊的持續性考慮。
注意
如果您實作自己的持續性,請務必呼叫 QuerySaveFiles 方法來節省時間。 這個方法會檢查以確保儲存檔案是安全的 (例如:檔案不是唯讀的)。