當使用者在專案中開啟檔案時,環境會進行輪詢程序,最終會開啟該檔案的適當編輯器或設計工具。 環境採用的初始程式對於標準和自訂編輯器都是相同的。 在決定用哪個編輯器來開啟檔案時,環境會使用各種準則,而 VSPackage 必須在這個過程中與環境協調。
例如,當使用者從 [檔案] 功能表選取 [開啟] 命令,然後選擇 filename.rtf (或任何其他副檔名為.rtf的檔案) 時,環境會呼叫IsDocumentInProject每個專案的實作,最終循環瀏覽解決方案中的所有專案實例。 專案會傳回一組旗標,依優先順序識別文件上的宣告。 使用最高優先順序,環境會呼叫適當的 OpenItem 方法。 如需輪詢程序的詳細資訊,請參閱 新增專案和專案專案範本。
「雜項檔案」專案會接管所有其他專案未接管的檔案。 如此一來,自訂編輯器就可以在標準編輯器開啟文件之前開啟文件。 如果 Miscellaneous Files 專案宣告檔案,環境會呼叫方法 OpenStandardEditor ,以使用標準編輯器開啟檔案。 環境會檢查其內部已註冊編輯器清單,以尋找處理 .rtf 檔案的編輯器。 此清單位於登錄檔中的以下索引鍵:
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\<editor factory guid>\Extensions
環境也會檢查 HKEY_CLASSES_ROOT\CLSID 索引鍵中的類別識別碼,以取得具有子索引碼 DocObject 的任何物件。 如果在那裡找到副檔名,則會在 Visual Studio 中就地建立應用程式的內嵌版本,例如 Microsoft Word。 這些文件物件必須是實作 IPersistStorage 介面的複合檔案,或物件必須實作 IPersistFileFormat 介面。
如果登錄中沒有 .rtf 檔案的編輯器處理站,則環境會查看 HKEY_CLASSES_ROOT\.rtf 索引鍵,並開啟其中指定的編輯器。 如果在 HKEY_CLASSES_ROOT 中找不到副檔名,則環境會使用 Visual Studio 核心文字編輯器來開啟檔案 (如果它是文字檔)。
如果核心文字編輯器失敗 (如果檔案不是文字檔,則會發生這種情況) ,則環境會針對檔案使用其二進位編輯器。
如果環境在其登錄中找到 .rtf 副檔名的編輯器,它會載入實作此編輯器工廠的 VSPackage。 環境會在新的 VSPackage 上呼叫 SetSite 方法。 VSPackage 會使用 RegisterEditor 方法呼叫 QueryServiceSID_SVsRegistorEditor,以向環境註冊編輯器處理站。
環境現在會重新檢查其已註冊編輯器的內部清單,以尋找新註冊的 .rtf 檔案編輯器工廠。 環境會呼叫 CreateEditorInstance 方法的實作,傳入檔案名稱和要建立的檢視類型。