將檢視附加至文件資料
如果您有新的文件檢視,您可以將它附加至現有的文件資料物件。
判斷您是否可以將檢視附加至現有的文件資料物件
在
IVsEditorFactory::CreateEditorInstance
的實作中,於 IDE 呼叫CreateEditorInstance
實作時,在現有文件資料物件上呼叫QueryInterface
。呼叫
QueryInterface
可讓您檢查punkDocDataExisting
參數中指定的現有文件資料物件。不過,您必須查詢的確切介面取決於開啟檔的編輯器,如步驟 4 中所述。
如果您在現有的文件資料物件上找不到適當的介面,請將錯誤碼傳回編輯器,指出文件資料物件與您的編輯器不相容。
在 IDE 的 OpenStandardEditor 實作中,訊息方塊會通知您文件在另一個編輯器中開啟,並詢問您是否要關閉文件。
如果您關閉此文件,Visual Studio 會第二次呼叫編輯器 Factory。 在此呼叫中,
DocDataExisting
參數等於 NULL。 然後,您的編輯器處理站實作可以在您自己的編輯器中開啟文件數據物件。注意
若要判斷您是否可以使用現有的文件資料物件,您也可以將指標轉換成私人實作的實際 Visual C++ 類別,以使用介面實作的私人知識。 例如,所有標準編輯器都會實作繼承自 IPersist 的
IVsPersistFileFormat
。 因此,您可以呼叫QueryInterface
GetClassID,如果現有文件資料物件上的類別識別碼符合實作的類別識別碼,則可以使用文件資料物件。
穩固程式設計
當 Visual Studio 呼叫 CreateEditorInstance 方法的實作時,它會傳回 punkDocDataExisting
參數中現有文件資料物件的指標 (如果有的話)。 檢查 punkDocDataExisting
中傳回的文件資料物件,以判斷文件資料物件是否適合您的編輯器,如本主題程序的步驟 4 所述。 如果適用,則您的編輯器 Factory 應該提供資料的第二個檢視,如支援多個文件檢視中所述。 如果沒有,它應該會顯示適當的錯誤訊息。