プロパティ ページの指定
更新 : 2007 年 11 月
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 を使用したプロパティ ページの実装