MFC ActiveX コントロール : カスタム プロパティ ページの追加
場合によっては適切に 1 個のプロパティ ページに適合するより、 ActiveX コントロールにより多くのプロパティがあります。この場合は、 ActiveX コントロールに二つのプロパティを表示するプロパティ ページを追加できます。
既に 1 個以上のプロパティ ページがあるこの技術情報では、 ActiveX コントロールに新しいプロパティ ページを追加する方法について説明します。ストック プロパティ ページ (フォント、ピクチャ、または色)の追加の詳細については、技術情報 MFC ActiveX コントロール: ストック プロパティ ページを使用するを参照してください。
次の手順では、 ActiveX コントロール ウィザードが作成するサンプル ActiveX コントロールのフレームワークを使用します。したがって、クラス名と ID は、この例で一意です。
ActiveX コントロールのプロパティ ページを使用する方法の詳細については、次の技術情報を参照:
MFC ActiveX コントロール: ストック プロパティ ページを使用する
[!メモ]
新しいプロパティ ページが ActiveX コントロールのプロパティ ページのサイズに関する標準に準拠することを強くお勧めします。標準的なピクチャおよびカラー プロパティ ページは 250x62 ダイアログ単位 (DLU)を測定します。標準フォントのプロパティ ページが 250x110 DLU です。ActiveX コントロール ウィザードで作成される既定のプロパティのページは 250x62 DLU の標準のを使用します。
新しいプロパティ ページ テンプレートをプロジェクトに挿入するには
開いているコントロール プロジェクトでプロジェクトのワークスペースのリソース ビューを開きます。
ショートカット メニューを開き、をクリック **リソースを追加します。**するリソース ビューで右クリックします。
ダイアログ ノードを展開し、 IDD_OLE_PROPPAGE_SMALLを選択します。
プロジェクトにリソースを追加するに New をクリックします。
プロパティ ウィンドウを更新する新しいプロパティ ページ テンプレートを選択します。
ID,id のプロパティの新しい値を入力します。この例では IDD_PROPPAGE_NEWPAGEを使用します。
ツール バーの [<ファイル名> の保存] をクリックします。
新しいテンプレートをクラスに関連付けるには
クラス ビューを開きます。
ショートカット メニューを開くには、クラス ビューで右クリックします。
ショートカット メニューの [追加] をクリックし、さらに [クラスの追加] をクリックします。
これは クラスの追加 のダイアログ ボックスを開きます。
MFC クラス テンプレートをダブルクリック。
MFC クラス ウィザードの クラス名(L),クラス名,Class 名 ボックスで、ダイアログ クラスの名前を入力します。(この例では CAddtlPropPageします)。
ファイル名を変更する場合は、 変更(G),変更をクリックします。実装およびヘッダー ファイルの名前を入力するか、既定の名前を受け入れます。
基本クラス(A),基本クラス ボックスで、ボックス COlePropertyPage。
Dialog 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 ボックスを表示 String Properties のページを開きます。キャプション ボックスに、入力した文字列が含まれています。
ID,id ボックスでは、文字列の ID を選択または入力します。押してが終了するとなります。
この例では、新しいプロパティ ページの型名で IDS_SAMPLE_ADDPAGE を使用します。
キャプションの ID と 「追加のプロパティ ページ] の IDS_SAMPLE_ADDPPG_CAPTION を使用して手順 3 ~ 4 を繰り返します。
新しいプロパティ ページ クラスの .cpp ファイルで IDS_SAMPLE_ADDPAGE が AfxOleRegisterPropertyPageClassを渡せるように (この例では CAddtlPropPageで次の例のように 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) { }
必要な変更のプロジェクトをリビルドにした、新しいプロパティ ページをテストするテスト コンテナーを使用して後。テスト コンテナーへのアクセス方法については、「テスト コンテナーでのプロパティとイベントのテスト」を参照してください。