プロパティ ページの指定
ActiveX コントロールを作成する場合、通常、コントロールのプロパティを設定するために使用できるプロパティ ページに関連する必要があります。コントロールのコンテナーは検索するために、コントロールのプロパティを設定するには、プロパティ ページを使用できる ISpecifyPropertyPages のインターフェイスを使用します。コントロールのこのインターフェイスを実装する必要があります。
ATL を使用して ISpecifyPropertyPages を実装するには、次の手順を実行する:
ISpecifyPropertyPagesImplからクラスを派生します。
クラスの COM マップに ISpecifyPropertyPages のエントリを追加します。
は、コントロールに関連付けられている各ページのプロパティ マップに PROP_PAGE のエントリを追加します。
[!メモ]
標準コントロールを [ATL コントロール ウィザード]を使用して生成した場合、プロパティ PROP_PAGE マップにエントリを追加する場合にのみ必要があります。ウィザードは、他の手順を行うために必要なコードが生成されます。
行儀は、コンテナーはプロパティの PROP_PAGE のエントリに対応するのと同じ順序で、指定したプロパティ ページを表示します。通常は、ユーザーがコントロールと特定のページが最初に表示されるように、プロパティ マップに、カスタム ページのエントリの後に標準のプロパティ ページのエントリを設定する必要があります。
例
Calendar コントロールの次のクラスは、プロパティがカスタム日付のページと標準色のページを使用して設定できることをコンテナーに通知するために 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.