次の方法で共有


プロパティ ページの指定

ActiveX コントロールを作成するとき、ActiveX コントロールをプロパティ ページに関連付けて、コントロールのプロパティを設定する場合があります。 コントロール コンテナーは、ISpecifyPropertyPages インターフェイスを使用して、どのプロパティ ページを使用するとコントロールのプロパティを設定できるかを調べます。 このインターフェイスをコントロールに実装する必要があります。

ATL で ISpecifyPropertyPages を実装するには、次の手順を実行します。

  1. 新しいクラスを ISpecifyPropertyPagesImpl から派生します。

  2. クラスの COM マップに ISpecifyPropertyPages のエントリを追加します。

  3. コントロールに関連付けるページごとに、PROP_PAGE エントリをプロパティ マップに追加します。

注意

ATL コントロール ウィザードで標準コントロールを生成する場合は、プロパティ マップに PROP_PAGE エントリを追加するだけです。 残りの手順については、ウィザードが必要なコードを生成します。

正常なコンテナーは、プロパティ マップの PROP_PAGE エントリと同じ順序で指定のプロパティ ページを表示します。 一般に、プロパティ マップでは、標準的なプロパティ ページ エントリよりも、カスタム ページのエントリを先に指定することをお勧めします。そうすると、作成したコントロールのページが先に表示されます。

次に示すカレンダー コントロールのクラスでは、独自の日付ページとストック カラー ページでプロパティを設定できることを ISpecifyPropertyPages インターフェイスを使用してコンテナーに知らせます。

class ATL_NO_VTABLE CMyCtrl :
   OtherInterfaces
   public ISpecifyPropertyPagesImpl<CMyCtrl>
{
public:

BEGIN_COM_MAP(CMyCtrl)
   OtherComMapEntries
   COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
END_COM_MAP()

BEGIN_PROP_MAP(CMyCtrl)
   OtherPropMapEntries
   PROP_PAGE(CLSID_DatePage)
   PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

   // Remainder of class declaration omitted.

参照

処理手順

ATLPages サンプル:IPropertyPageImpl を使用して、プロパティ ページを実装します。

概念

ATL COM プロパティ ページ