次の方法で共有


MFC ActiveX コントロール: 別のカスタム プロパティ ページの追加

場合によっては、ActiveX コントロールには、1 つのプロパティ ページに適した数を超えるプロパティが含まれます。 この場合、ActiveX コントロールにプロパティ ページを追加して、これらのプロパティを表示できます。

この記事では、少なくとも 1 つのプロパティ ページが既に存在する ActiveX コントロールに新しいプロパティ ページを追加する方法について説明します。 ストック プロパティ ページ (フォント、図、または色) の追加の詳細については、「 MFC ActiveX コントロール: ストック プロパティ ページの使用」を参照してください。

次の手順では、ActiveX コントロール ウィザードによって作成されたサンプルの ActiveX コントロール フレームワークを使用します。 そのため、クラス名と識別子は、この例に固有です。

ActiveX コントロールでプロパティ ページを使用する方法の詳細については、次の記事を参照してください。

新しいプロパティ ページ テンプレートをプロジェクトに挿入するには

  1. コントロール プロジェクトを開いた状態で、プロジェクト ワークスペースでリソース ビューを開きます。

  2. リソース ビューを右クリックしてショートカット メニューを開き、[ リソースの追加] をクリックします。

  3. ダイアログ ノードを展開し、IDD_OLE_PROPPAGE_SMALLを選択します。

  4. [ 新規 ] をクリックして、リソースをプロジェクトに追加します。

  5. 新しいプロパティ ページ テンプレートを選択して、[ プロパティ ] ウィンドウ ( リソース ビュー) を更新します。

  6. ID プロパティの新しい値を入力します。 この例では 、IDD_PROPPAGE_NEWPAGEを使用します。

  7. ツール バーの [保存] をクリックします。

新しいテンプレートをクラスに関連付けるには

  1. クラス ビューを開きます。

  2. クラス ビューで右クリックし、ショートカット メニューを開きます。

  3. ショートカット メニューの [ 追加 ] をクリックし、[ クラスの追加] をクリックします。

    [クラスの 追加 ] ダイアログ ボックスが開きます。

  4. MFC クラス テンプレートをダブルクリックします。

  5. MFC クラス ウィザードの [クラス名] ボックスに、新しいダイアログ クラスの名前を入力します。 (この例では、 CAddtlPropPage)。

  6. ファイル名を変更する場合は、[ 変更] をクリックします。 実装ファイルとヘッダー ファイルの名前を入力するか、既定の名前をそのまま使用します。

  7. [ 基本クラス ] ボックスで、 COlePropertyPageを選択します。

  8. ダイアログ ID ボックスで、IDD_PROPPAGE_NEWPAGEを選択します。

  9. [ 完了] をクリックしてクラスを作成します。

コントロールのユーザーがこの新しいプロパティ ページにアクセスできるようにするには、コントロールのプロパティ ページ ID マクロ セクション (コントロール実装ファイル内) に次の変更を加えます。

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

BEGIN_PROPPAGEIDS マクロの 2 番目のパラメーター (プロパティ ページ数) を 1 から 2 に増やす必要があることに注意してください。

また、コントロール実装ファイル (.ヘッダーを含める CPP) ファイル (.H) 新しいプロパティ ページ クラスのファイル。

次の手順では、新しいプロパティ ページの型名とキャプションを提供する 2 つの新しい文字列リソースを作成します。

プロパティ ページに新しい文字列リソースを追加するには

  1. コントロール プロジェクトを開いた状態で、リソース ビューを開きます。

  2. 文字列テーブル フォルダーをダブルクリックし、文字列を追加する既存の文字列テーブル リソースをダブルクリックします。

    ウィンドウに文字列テーブルが開きます。

  3. 文字列テーブルの末尾にある空白行を選択し、文字列のテキスト (キャプション) を入力します (例: "追加プロパティ ページ")。

    [キャプション] ボックスと [ID] ボックスが表示された [文字列のプロパティ] ページが開きます。 [ キャプション ] ボックスには、入力した文字列が含まれています。

  4. [ID] ボックスで、文字列の ID を選択または入力します。 完了したら、Enter キーを押します。

    この例では、新しいプロパティ ページの型名に IDS_SAMPLE_ADDPAGE を使用します。

  5. ID に IDS_SAMPLE_ADDPPG_CAPTION を使用して手順 3 と 4 を繰り返し、キャプションの "追加プロパティ ページ" を繰り返します。

  6. の。次の例のように、新しいプロパティ ページ クラスの 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);
    }
    
  7. 次のように、IDS_SAMPLE_ADDPPG_CAPTIONがCOlePropertyPageコンストラクターに渡されるように、CAddtlPropPageのコンストラクターを変更します。

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

必要な変更を行った後、プロジェクトをリビルドし、テスト コンテナーを使用して新しいプロパティ ページをテストします。 Test Container にアクセスする方法について詳しくは、「 テスト コンテナーでのプロパティとイベントのテスト 」をご覧ください。

こちらも参照ください

MFC ActiveX コントロール