Share via


標準エディターを開く

標準エディターを開くときは、指定されたファイルの種類に対して、プロジェクト固有のエディターを指定するのではなく、IDE で標準エディターが決定されます。

OpenItem メソッドを実装するには、次の手順を完了します。 これにより、標準エディターでプロジェクト ファイルが開きます。

標準エディターを使用して OpenItem メソッドを実装するには

  1. IVsRunningDocumentTable (RDT_EditLock) を呼び出して、ドキュメント データ オブジェクト ファイルが既に開いているかどうかを判断します。

  2. ファイルが既に開いている場合は、IsDocumentOpen メソッドを呼び出して grfIDO パラメーターに IDO_ActivateIfOpen の値を指定して、ファイルを再表示します。

    ファイルが開いていて、ドキュメントが呼び出し元プロジェクトとは異なるプロジェクトによって所有されている場合、プロジェクトには、開いているエディターが別のプロジェクトのものであることを示す警告が表示されます。 次に、ファイル ウィンドウが表示されます。

  3. ドキュメントが開いていない場合、または実行中のドキュメント テーブルにない場合は、OpenStandardEditor メソッド (OSE_ChooseBestStdEditor) を呼び出して、ファイルの標準エディターを開きます。

    メソッドを呼び出すと、IDE では次のタスクを実行します。

    1. IDE では、Editors/{guidEditorType}/Extensions サブキーをスキャンして、ファイルを開くことができるエディターのうち、この実行に最も高い優先順位を持つものを特定します。

    2. ファイルを開くことができるエディターが特定されると、IDE では CreateEditorInstance を呼び出します。 エディターでのこのメソッドの実装では、IDE で CreateDocumentWindow を呼び出して新しく開いたドキュメントをサイト設定するために必要な情報を返します。

    3. 最後に、IDE では通常の永続化インターフェイス (IVsPersistDocData2 など) を使用してドキュメントを読み込みます。

    4. 以前に IDE で階層または階層項目が使用可能であると判断されている場合、IDE ではプロジェクトで GetItemContext メソッドを呼び出して、CreateDocumentWindow メソッド呼び出しで渡し返すプロジェクトレベルのコンテキスト IServiceProvider ポインターを取得します。

  4. エディターでプロジェクトからコンテキストを取得できるようにする場合は、IDE で GetItemContext をプロジェクトで呼び出すと、IServiceProvider へのポインターが IDE に返されます。

    この手順を実行すると、プロジェクトではエディターに追加のサービスを提供できます。

    ドキュメント ビューまたはドキュメント ビュー オブジェクトがウィンドウ フレームで正常にサイト設定されている場合は、LoadDocData を呼び出すことによって、オブジェクトがそのデータで初期化されます。