次の方法で共有


プロパティ ページの指定

ActiveX コントロールを作成する際、通常、コントロールのプロパティの設定に使用するプロパティ ページに、それを関連付けたいことでしょう。 コントロール コンテナーでは、ISpecifyPropertyPages インターフェイスを使用して、コントロールのプロパティの設定に使用するプロパティ ページを確認します。 このインターフェイスをコントロールに実装する必要があります。

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

  1. ISpecifyPropertyPagesImpl からクラスを派生させます。

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

  3. プロパティ マップのコントロールに関連付けられている各ページに、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.

関連項目

プロパティ ページ
ATLPages の例