次の方法で共有


プロジェクトでファイルを開くエディターを決定する

ユーザーがプロジェクトでファイルを開くと、環境はポーリング プロセスを経て、最終的にそのファイルの適切なエディターまたはデザイナーを開きます。 環境で使用される最初の手順は、標準エディターとカスタム エディターの両方で同じです。 環境では、ファイルを開くために使用するエディターをポーリングするときにさまざまな条件が使用され、VSPackage はこのプロセス中に環境と連携する必要があります。

たとえば、ユーザーが [ファイル] メニューから [開く] コマンドを選択し、filename.rtf (または拡張子が.rtfの他のファイル) を選択すると、環境は各プロジェクトのIsDocumentInProject実装を呼び出し、最終的にソリューション内のすべてのプロジェクト インスタンスを循環させます。 プロジェクトは、ドキュメントの要求を優先順位で識別するフラグのセットを返します。 最も高い優先度を使用して、環境は適切な OpenItem メソッドを呼び出します。 ポーリング プロセスの詳細については、「 プロジェクトとプロジェクト項目テンプレートの追加」を参照してください。

その他のファイル プロジェクトは、他のプロジェクトによって要求されていないすべてのファイルを要求します。 これにより、カスタム エディターは、標準エディターでドキュメントを開く前に開くことができます。 その他のファイル プロジェクトがファイルを要求する場合、環境は OpenStandardEditor メソッドを呼び出して、標準エディターでファイルを開きます。 この環境では、登録されているエディターの内部リストで、.rtfファイル 処理するエディターがチェックされます。 この一覧は、次のキーのレジストリにあります。

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\< version>\Editors\<editor factory guid>\Extensions

また、この環境では、サブキー DocObject を持つオブジェクトの HKEY_CLASSES_ROOT\CLSID キー内のクラス識別子もチェックされます。 ファイル拡張子が見つかった場合は、Visual Studio で埋め込みバージョンのアプリケーション (Microsoft Word など) がインプレースで作成されます。 これらのドキュメント オブジェクトは、 IPersistStorage インターフェイスを実装する複合ファイルであるか、オブジェクトが IPersistFileFormat インターフェイスを実装する必要があります。

レジストリに .rtf ファイルのエディター ファクトリがない場合、環境は HKEY_CLASSES_ROOT\.rtf キーを検索し、そこで指定されたエディターを開きます。 ファイル拡張子が HKEY_CLASSES_ROOTで見つからない場合、環境は Visual Studio コア テキスト エディターを使用してファイルを開きます (テキスト ファイルの場合)。

ファイルがテキスト ファイルでない場合に発生するコア テキスト エディターが失敗した場合、環境ではファイルにバイナリ エディターが使用されます。

環境で .rtf 拡張機能のエディターがレジストリに見つかると、このエディター ファクトリを実装する VSPackage が読み込まれます。 環境は、新しい VSPackage で SetSite メソッドを呼び出します。 VSPackage は、RegisterEditor メソッドを使用してエディター ファクトリを環境に登録し、SID_SVsRegistorEditor 内のQueryService を呼び出します。

環境が、登録済みエディターの内部リストを再確認し、新しく登録された .rtf ファイル用のエディターファクトリを見つけます。 環境は、 CreateEditorInstance メソッドの実装を呼び出し、作成するファイル名とビューの種類を渡します。