次の方法で共有


プロジェクト プロパティのユーザー インターフェイス

プロジェクト サブタイプで、プロジェクトの [プロパティ ページ] ダイアログ ボックスにある項目を、ベース プロジェクトに用意されているものをそのまま使用することができます。また、コントロールやページ全体をそのまま読み取り専用または非表示にしたり、[プロパティ ページ] ダイアログ ボックスにプロジェクト サブタイプ固有のページを追加したりできます。

[プロジェクトのプロパティ] ダイアログ ボックスを拡張する

プロジェクト サブタイプで、オートメーション エクステンダーとプロジェクト構成参照オブジェクトが実装されます。 これらのエクステンダーには、特定のプロパティを非表示または読み取り専用にするための IFilterProperties インターフェイスが実装されています。 ベース プロジェクトによって実装されたベース プロジェクトの [プロパティ ページ] ダイアログ ボックスでは、オートメーション エクステンダーによって実行されるフィルター処理が優先されます。

[プロジェクトのプロパティ] ダイアログ ボックスを拡張するプロセスを以下に示します。

  • ベース プロジェクトで IInternalExtenderProvider インターフェイスを実装することにより、プロジェクト サブタイプからエクステンダーを取得します。 ベース プロジェクトの参照、プロジェクト オートメーション、プロジェクト構成参照オブジェクトには、このインターフェイスが実装されます。

  • プロジェクト参照オブジェクトおよびプロジェクト オートメーション オブジェクトでの IInternalExtenderProvider の実装は、プロジェクト サブタイプ アグリゲーターの IInternalExtenderProvider 実装に委任されます (つまり、IVsHierarchy プロジェクト オブジェクトに対し IInternalExtenderProviderQueryInterface を呼び出します)。

  • ベース プロジェクト構成参照オブジェクトには、プロジェクト サブタイプ構成オブジェクトからオートメーション エクステンダーに直接接続するための IInternalExtenderProvider も実装されます。 その実装は、プロジェクト サブタイプ アグリゲーターで実装される IInternalExtenderProvider インターフェイスに委任されます。

  • GetProjectItem は、プロジェクト構成参照オブジェクトによって実装され、IVsHierarchy オブジェクトが返されます。

  • GetCfg も、プロジェクト構成参照オブジェクトによって実装され、IVsCfg オブジェクトが返されます。

  • プロジェクト サブタイプで、次の __VSHPROPID2 の値の取得により、実行時にベース プロジェクトのさまざまな拡張可能オブジェクトに適切な CATID を確認できます。

プロジェクト スコープの CATID を確認するために、プロジェクト サブタイプで VSITEMID typedef から VSITEMID.Root の上記のプロパティを取得します。 プロジェクト サブタイプには、構成に依存するものと依存しないものの両方について、プロジェクトに対して表示される [プロパティ ページ] ダイアログ ボックスのページを制御する必要がある場合もあります。 一部のプロジェクト サブタイプには、組み込みのページを削除し、プロジェクト サブタイプに固有のページを追加する必要がある場合があります。 これを可能にするために、マネージド クライアント プロジェクトから、次のプロパティの GetProperty メソッドを呼び出します。

  • VSHPROPID_PropertyPagesCLSIDList - 構成に依存しないプロパティ ページの CLSID をセミコロンで区切った一覧。

  • VSHPROPID_CfgPropertyPagesCLSIDList — 構成に依存するプロパティ ページの CLSID をセミコロンで区切った一覧。

プロジェクト サブタイプによって IVsHierarchy オブジェクトが集約されるため、これらのプロパティの定義をオーバーライドして、どの [プロパティ ページ] ダイアログ ボックスを表示するかを制御できます。 プロジェクト サブタイプで、これらのプロパティを内部のベース プロジェクトから取得し、必要に応じて CLSID を追加または削除できます。

プロジェクト サブタイプによって追加された新しいプロパティ ページには、ベース プロジェクトの実装からプロジェクト構成参照オブジェクトが渡されます。 このプロジェクト構成参照オブジェクトは、オートメーション エクステンダーをサポートします。 オートメーション エクステンダーの詳細については、「オートメーション エクステンダーの実装と使用」を参照してください。 プロジェクト サブタイプによって実装されるプロパティ ページは、Extender[] を呼び出して、ベース プロジェクト構成参照オブジェクトを拡張する独自のプロジェクト サブタイプ構成参照オブジェクトを取得します。

関連項目