カスタム エディターは、ドキュメント データ オブジェクトとドキュメント ビュー オブジェクトの 2 つの部分で構成されます。 名前が示すように、ドキュメント データ オブジェクトは表示するテキスト データを表します。 同様に、ドキュメント ビュー オブジェクト (または "ビュー") は、ドキュメント データ オブジェクトを表示する 1 つ以上のウィンドウを表します。
ドキュメント データ オブジェクト
ドキュメント データ オブジェクトは、テキスト バッファー内のテキストのデータ表現です。 ドキュメント テキストやその他の情報を格納する COM オブジェクトです。 ドキュメント データ オブジェクトは、ドキュメントの永続化も処理し、そのデータの複数のビューを有効にします。 詳細については、次を参照してください。
DocumentData[] と ドキュメント ウィンドウ。
カスタム エディターとデザイナーは、 VsTextBuffer オブジェクトまたは独自のカスタム バッファーを使用することを選択できます。 VsTextBuffer は、標準エディターの簡略化された埋め込みモデルに従い、複数のビューをサポートし、複数のビューの管理に使用されるイベント インターフェイスを提供します。
ドキュメント ビュー オブジェクト
コードやその他のテキストを表示するウィンドウは、ドキュメント ビューまたはビューと呼ばれます。 エディターを作成するときに、1 つのビューを選択して、テキストを 1 つのウィンドウに表示できます。 または、複数のウィンドウにテキストを表示する複数のビューを選択することもできます。 選択は、アプリケーションによって異なります。 たとえば、サイド バイ サイド編集が必要な場合は、複数のビューを選択します。 各ビューは、統合開発環境 (IDE) の実行中のドキュメント テーブル (RDT) のエントリに関連付けられます。 ビュー ウィンドウは、プロジェクトまたは IVsHierarchy オブジェクトに属しています。
エディターで 1 つのドキュメント データ オブジェクトの複数のビューがサポートされている場合は、ドキュメント データオブジェクトとドキュメント ビュー オブジェクトを分離する必要があります。 それ以外の場合は、グループ化できます。 詳細については、「 複数のドキュメント ビューをサポートする」を参照してください。
IDE は、実行中のドキュメント テーブル内のエントリごとに項目識別子 (ItemID) を照合することで、イベント (ドキュメントを含むソリューションが閉じられた場合など) についてビューに通知します。 詳細については、 ドキュメントテーブルの実行を参照してください。
カスタム エディターのビューを作成するには、2 つのオプションがあります。 1 つはインプレース アクティブ化モデルで、ActiveX コントロールまたはドキュメント データ オブジェクトを使用してウィンドウでビューがホストされます。 2 つ目は簡略化された埋め込みモデルです。このモデルでは、ビューは Visual Studio によってホストされ、 IVsWindowPane はウィンドウ コマンドを処理するために実装されます。 インプレース アクティブ化モデルの詳細については、「イン プレース アクティブ化」を参照してください。 簡略化された埋め込みモデルの詳細については、「 簡略化された埋め込み」を参照してください。