ActiveX コントロールを作成するとき、ActiveX コントロールをプロパティ ページに関連付けて、コントロールのプロパティを設定する場合があります。 コントロール コンテナーは、ISpecifyPropertyPages インターフェイスを使用して、どのプロパティ ページを使用するとコントロールのプロパティを設定できるかを調べます。 このインターフェイスをコントロールに実装する必要があります。
ATL で ISpecifyPropertyPages を実装するには、次の手順を実行します。
新しいクラスを ISpecifyPropertyPagesImpl から派生します。
クラスの COM マップに ISpecifyPropertyPages のエントリを追加します。
コントロールに関連付けるページごとに、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 を使用して、プロパティ ページを実装します。