次の方法で共有


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

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

Von Bedeutung

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

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

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

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

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

Circ3 の [プロパティ] ダイアログ ボックス。
[プロパティ] ダイアログ ボックス

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

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

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

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

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

プロパティ ページ (この場合は既定値) の実装は、次の 3 つの手順で行います。

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

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

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

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

たとえば、次の手順では単純なコントロール ("Sample" という名前) を使用します。 サンプルは ActiveX コントロール ウィザードを使用して作成され、stock Caption プロパティのみが含まれています。

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

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

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

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

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

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

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

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

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

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

DoDataExchange 関数のカスタマイズ

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

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

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

この関数は、関数を使用して、プロパティ ページの DDP_TEXT メンバー変数を 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 クラス