MFC ActiveX コントロール : プロパティ ページ

ActiveX ユーザーは、プロパティ ページを使用して、ActiveX コントロールのプロパティを表示および変更できます。 これらのプロパティにアクセスするには、コントロールのプロパティ ダイアログ ボックスを呼び出します。このダイアログ ボックスには、コントロールのプロパティを表示および編集するためのカスタマイズされたグラフィカル インターフェイスを提供する 1 つ以上のプロパティ ページが含まれています。

重要

ActiveX は、新しい開発には使用すべきではないレガシ テクノロジです。 ActiveX に取って代わる最新のテクノロジの詳細については、「ActiveX コントロール」を参照してください。

ActiveX コントロールのプロパティ ページは、次の 2 つの方法で表示されます。

  • コントロールの Properties 動詞 (OLEIVERB_PROPERTIES) が呼び出されると、コントロールのプロパティ ページを含むモーダル プロパティ ダイアログ ボックスが開きます。

  • コンテナーは、選択されたコントロールのプロパティ ページを表示する独自のモードレス ダイアログ ボックスを表示できます。

(次の図に示す) プロパティ ダイアログ ボックスは、現在のプロパティ ページを表示するための領域、プロパティ ページを切り替えるためのタブ、および一般的なタスク (プロパティ ページ ダイアログを閉じる、変更を取り消す、ActiveX コントロールに変更をすぐに適用するなど) を実行するボタンのコレクションで構成されます。

Properties dialog box for Circ3.
[プロパティ] ダイアログ ボックス

この記事では、ActiveX コントロールのプロパティ ページの使用に関連するトピックについて説明します。 これには以下が含まれます。

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

ActiveX コントロール以外の MFC アプリケーションでプロパティ シートを使用する方法については、プロパティ シートに関するページを参照してください。

既定のプロパティ ページの実装

ActiveX コントロール ウィザードを使用してコントロール プロジェクトを作成する場合、ActiveX コントロール ウィザードには、COlePropertyPage クラスから派生したコントロールの既定のプロパティ ページ クラスが用意されています。 このプロパティ ページは最初は空白になっていますが、任意のダイアログ ボックス コントロールまたはコントロールのセットを追加できます。 ActiveX コントロール ウィザードでは既定で 1 つのプロパティ ページ クラスしか作成されないため、クラス ビューを使用して追加のプロパティ ページ クラス (同様に COlePropertyPage から派生します) を作成する必要があります。 この手順の詳細については、「MFC ActiveX コントロール: 別のカスタム プロパティ ページの追加」を参照してください。

プロパティ ページ (この場合は既定値) の実装は、次の 3 段階のプロセスです。

プロパティ ページを実装するには

  1. COlePropertyPage の派生クラスをコントロール プロジェクトに追加します。 プロジェクトが (この場合のように) ActiveX コントロール ウィザードを使用して作成されていた場合、既定のプロパティ ページ クラスは既に存在します。

  2. ダイアログ エディターを使用して、プロパティ ページ テンプレートにコントロールを追加します。

  3. プロパティ ページ コントロールと ActiveX コントロールの間で値を交換するように、COlePropertyPage の派生クラスの DoDataExchange 関数をカスタマイズします。

例として、次の手順では "Sample" という名前の単純なコントロールを使用しています。 Sample は、ActiveX コントロール ウィザードを使用して作成されており、ストック Caption プロパティのみを含みます。

プロパティ ページへのコントロールの追加

プロパティ ページにコントロールを追加するには

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

  2. [ダイアログ] ディレクトリ アイコンをダブルクリックします。

  3. IDD_PROPPAGE_SAMPLE ダイアログ ボックスを開きます。

    ActiveX コントロール ウィザードにより、プロジェクトの名前がダイアログ ID (この場合は Sample) の末尾に追加されます。

  4. 選択したコントロールをツールボックスからダイアログ ボックス領域にドラッグ アンド ドロップします。

  5. この例では、テキスト ラベル コントロール "Caption: " と、IDC_CAPTION 識別子の付いた編集ボックス コントロールで十分です。

  6. ツール バーの [保存] をクリックして、変更を保存します。

ユーザー インターフェイスが変更されたので、編集ボックスを Caption プロパティにリンクする必要があります。 これは、次のセクションで CSamplePropPage::DoDataExchange 関数を編集することによって行います。

DoDataExchange 関数のカスタマイズ

プロパティ ページの CWnd::DoDataExchange 関数を使用すると、プロパティ ページの値をコントロール内のプロパティの実際の値にリンクできます。 リンクを確立するには、適切なプロパティ ページ フィールドをそれぞれのコントロール プロパティにマップする必要があります。

これらのマッピングは、プロパティ ページの DDP_ 関数を使用して実装されます。 DDP_ 関数は標準の MFC ダイアログで使用される DDX_ 関数と同様に機能しますが、1 つの例外があります。 DDP_ 関数は、メンバー変数への参照に加えて、コントロール プロパティの名前を受け取ります。 プロパティ ページの DoDataExchange 関数の一般的なエントリを次に示します。

DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));

この関数では、DDP_TEXT 関数を使用して、プロパティ ページの m_caption メンバー変数が Caption に関連付けられます。

プロパティ ページ コントロールを挿入した後は、前述のように DDP_Text 関数を使用して、プロパティ ページ コントロール IDC_CAPTION と実際のコントロール プロパティ Caption との間にリンクを確立する必要があります。

プロパティ ページは、チェック ボックス、ラジオボタン、リスト ボックスなどの他のダイアログ コントロールの種類でも使用できます。 次の表に、プロパティ ページの DDP_ 関数のセット全体とその目的を示します。

プロパティ ページの関数

関数名 この関数を使用してリンクするもの
DDP_CBIndex コンボ ボックス内の選択された文字列のインデックスとコントロール プロパティ。
DDP_CBString コンボ ボックス内の選択された文字列とコントロール プロパティ。 選択された文字列は、プロパティの値と同じ文字で始めることができますが、完全に一致する必要はありません。
DDP_CBStringExact コンボ ボックス内の選択された文字列とコントロール プロパティ。 選択された文字列とプロパティの文字列値は、完全に一致する必要があります。
DDP_Check チェック ボックスとコントロール プロパティ。
DDP_LBIndex リスト ボックス内の選択された文字列のインデックスとコントロール プロパティ。
DDP_LBString リスト ボックス内の選択された文字列とコントロール プロパティ。 選択された文字列は、プロパティの値と同じ文字で始めることができますが、完全に一致する必要はありません。
DDP_LBStringExact リスト ボックス内の選択された文字列とコントロール プロパティ。 選択された文字列とプロパティの文字列値は、完全に一致する必要があります。
DDP_Radio ラジオ ボタンとコントロール プロパティ。
DDP_Text テキストとコントロール プロパティ。

関連項目

MFC ActiveX コントロール
COlePropertyPage クラス