プロパティ ページの指定
ActiveX コントロールを作成する際、通常、コントロールのプロパティの設定に使用するプロパティ ページに、それを関連付けたいことでしょう。 コントロール コンテナーでは、ISpecifyPropertyPages
インターフェイスを使用して、コントロールのプロパティの設定に使用するプロパティ ページを確認します。 このインターフェイスをコントロールに実装する必要があります。
ATL を使用して ISpecifyPropertyPages
を実装するには、次の手順を実行します。
ISpecifyPropertyPagesImpl からクラスを派生させます。
クラスの COM マップに
ISpecifyPropertyPages
のエントリを追加します。プロパティ マップのコントロールに関連付けられている各ページに、PROP_PAGE のエントリを追加します。
Note
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.