場合によっては、ActiveX コントロールには、1 つのプロパティ ページに適した数を超えるプロパティが含まれます。 この場合、ActiveX コントロールにプロパティ ページを追加して、これらのプロパティを表示できます。
この記事では、少なくとも 1 つのプロパティ ページが既に存在する ActiveX コントロールに新しいプロパティ ページを追加する方法について説明します。 ストック プロパティ ページ (フォント、図、または色) の追加の詳細については、「 MFC ActiveX コントロール: ストック プロパティ ページの使用」を参照してください。
次の手順では、ActiveX コントロール ウィザードによって作成されたサンプルの ActiveX コントロール フレームワークを使用します。 そのため、クラス名と識別子は、この例に固有です。
ActiveX コントロールでプロパティ ページを使用する方法の詳細については、次の記事を参照してください。
MFC ActiveX コントロール: ストック プロパティ ページの使用
注
新しいプロパティ ページは、ActiveX コントロール プロパティ ページのサイズ標準に準拠することを強くお勧めします。 ストック画像およびカラー プロパティ ページは、250 x 62 ダイアログ 単位 (DLU) を測定します。 標準フォント プロパティ ページは 250 x 110 D RU です。 ActiveX コントロール ウィザードによって作成された既定のプロパティ ページでは、250 x 62 DLU 標準が使用されます。
新しいプロパティ ページ テンプレートをプロジェクトに挿入するには
コントロール プロジェクトを開いた状態で、プロジェクト ワークスペースでリソース ビューを開きます。
リソース ビューを右クリックしてショートカット メニューを開き、[ リソースの追加] をクリックします。
ダイアログ ノードを展開し、IDD_OLE_PROPPAGE_SMALLを選択します。
[ 新規 ] をクリックして、リソースをプロジェクトに追加します。
新しいプロパティ ページ テンプレートを選択して、[ プロパティ ] ウィンドウ ( リソース ビュー) を更新します。
ID プロパティの新しい値を入力します。 この例では 、IDD_PROPPAGE_NEWPAGEを使用します。
ツール バーの [保存] をクリックします。
新しいテンプレートをクラスに関連付けるには
クラス ビューを開きます。
クラス ビューで右クリックし、ショートカット メニューを開きます。
ショートカット メニューの [ 追加 ] をクリックし、[ クラスの追加] をクリックします。
[クラスの 追加 ] ダイアログ ボックスが開きます。
MFC クラス テンプレートをダブルクリックします。
MFC クラス ウィザードの [クラス名] ボックスに、新しいダイアログ クラスの名前を入力します。 (この例では、
CAddtlPropPage
)。ファイル名を変更する場合は、[ 変更] をクリックします。 実装ファイルとヘッダー ファイルの名前を入力するか、既定の名前をそのまま使用します。
[ 基本クラス ] ボックスで、
COlePropertyPage
を選択します。ダイアログ ID ボックスで、IDD_PROPPAGE_NEWPAGEを選択します。
[ 完了] をクリックしてクラスを作成します。
コントロールのユーザーがこの新しいプロパティ ページにアクセスできるようにするには、コントロールのプロパティ ページ ID マクロ セクション (コントロール実装ファイル内) に次の変更を加えます。
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
BEGIN_PROPPAGEIDS マクロの 2 番目のパラメーター (プロパティ ページ数) を 1 から 2 に増やす必要があることに注意してください。
また、コントロール実装ファイル (.ヘッダーを含める CPP) ファイル (.H) 新しいプロパティ ページ クラスのファイル。
次の手順では、新しいプロパティ ページの型名とキャプションを提供する 2 つの新しい文字列リソースを作成します。
プロパティ ページに新しい文字列リソースを追加するには
コントロール プロジェクトを開いた状態で、リソース ビューを開きます。
文字列テーブル フォルダーをダブルクリックし、文字列を追加する既存の文字列テーブル リソースをダブルクリックします。
ウィンドウに文字列テーブルが開きます。
文字列テーブルの末尾にある空白行を選択し、文字列のテキスト (キャプション) を入力します (例: "追加プロパティ ページ")。
[キャプション] ボックスと [ID] ボックスが表示された [文字列のプロパティ] ページが開きます。 [ キャプション ] ボックスには、入力した文字列が含まれています。
[ID] ボックスで、文字列の ID を選択または入力します。 完了したら、Enter キーを押します。
この例では、新しいプロパティ ページの型名に IDS_SAMPLE_ADDPAGE を使用します。
ID に IDS_SAMPLE_ADDPPG_CAPTION を使用して手順 3 と 4 を繰り返し、キャプションの "追加プロパティ ページ" を繰り返します。
の。次の例のように、新しいプロパティ ページ クラスの CPP ファイル (この例では、
CAddtlPropPage
) は、IDS_SAMPLE_ADDPAGEが AfxOleRegisterPropertyPageClass によって渡されるように、CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry
を変更します。BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister) { if (bRegister) return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), m_clsid, IDS_SAMPLE_ADDPAGE); else return AfxOleUnregisterClass(m_clsid, NULL); }
次のように、IDS_SAMPLE_ADDPPG_CAPTIONが
COlePropertyPage
コンストラクターに渡されるように、CAddtlPropPage
のコンストラクターを変更します。CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
必要な変更を行った後、プロジェクトをリビルドし、テスト コンテナーを使用して新しいプロパティ ページをテストします。 Test Container にアクセスする方法について詳しくは、「 テスト コンテナーでのプロパティとイベントのテスト 」をご覧ください。