MFC ActiveX コントロール : プロパティ ページ
ActiveX コントロールのユーザーは、プロパティ ページを使って、ActiveX コントロールのプロパティの表示や変更を行うことができます。 プロパティにアクセスするには、コントロールのプロパティ ダイアログ ボックスを開きます。このダイアログ ボックスには、カスタマイズされたグラフィカル インターフェイスを持つ 1 つ以上のプロパティ ページがあり、コントロール プロパティの表示や編集に使用されます。
ActiveX コントロールのプロパティ ページを表示するには、次の 2 とおりの方法があります。
コントロールのプロパティの動詞 (OLEIVERB_PROPERTIES) が呼び出されると、コントロールは、コントロールのプロパティ ページがあるモーダル プロパティ ダイアログ ボックスを開きます。
コンテナーは、独自のモードレス ダイアログ ボックスを表示できます。このダイアログ ボックスには、選択したコントロールのプロパティ ページが表示されます。
次の図のように、プロパティ ダイアログ ボックスは、現在のプロパティ ページを表示する領域、プロパティ ページ間を切り替えるタブ、およびよく行われる処理 (プロパティ ページ ダイアログ ボックスを閉じる、変更内容をキャンセルする、変更内容をすぐに ActiveX コントロールに適用するなど) を実行するためのボタン群で構成されています。
プロパティ ダイアログ ボックス
ここでは、ActiveX コントロールのプロパティ ページの使用に関する以下のトピックについて説明します。 このようなコントロールを次に示します。
既定のプロパティ ページの実装
プロパティ ページへのコントロールの追加
DoDataExchange 関数のカスタマイズ
ActiveX コントロールのプロパティ ページの使い方については、次の項目を参照してください。
ActiveX コントロール以外の MFC アプリケーションでのプロパティ シートの使い方については、「プロパティ シート (MFC)」を参照してください。
既定のプロパティ ページの実装
ActiveX コントロール ウィザードを使ってコントロール プロジェクトを作成すると、COlePropertyPage クラス から派生したコントロールの既定のプロパティ ページ クラスが提供されます。 このプロパティ ページは最初は空白ですが、ページにダイアログ ボックス コントロールを自由に追加できます。 既定では、ActiveX コントロール ウィザードによって作成されるプロパティ ページ クラスは 1 つだけなので、追加のプロパティ ページ クラス (COlePropertyPage の派生クラス) は、クラス ビューを使って作成する必要があります。 この手順の詳細については、「MFC ActiveX コントロール : カスタム プロパティ ページの追加」を参照してください。
既定のプロパティ ページを実装するには、次の 3 つの手順を行います。
プロパティ ページを実装するには
コントロール プロジェクトに COlePropertyPage の派生クラスを追加します。 この例のように、ActiveX コントロール ウィザードを使ってプロジェクトを作成した場合は、既定のプロパティ ページ クラスが既に存在します。
ダイアログ エディターを使って、プロパティ ページ テンプレートにコントロールを追加します。
COlePropertyPage 派生クラスの DoDataExchange 関数をカスタマイズして、プロパティ ページ コントロールと ActiveX コントロールとの間で値を交換するようにします。
次の手順では、"Sample" という名前の単純なコントロールを例として使用します。 Sample は、ActiveX コントロール ウィザードを使って作成されており、Caption ストック プロパティだけを持ちます。
プロパティ ページへのコントロールの追加
プロパティ ページにコントロールを追加するには
コントロール プロジェクトが開いている状態で、[リソース ビュー] を開きます。
[Dialog] ディレクトリ アイコンをダブルクリックします。
[IDD_PROPPAGE_SAMPLE]ダイアログ ボックスを開きます。
ActiveX コントロール ウィザードによって、ダイアログ ID の末尾にプロジェクトの名前 (この場合は Sample) が追加されます。
ツールボックスでコントロールを選択し、ダイアログ ボックスの領域にドラッグ アンド ドロップします。
この例では、テキスト ラベル コントロール "Caption :" と、識別子 IDC_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 に結び付けます。
プロパティ ページ (MFC) は、チェック ボックス、オプション ボタン、リスト ボックスなど、他の種類のダイアログ コントロールにも使用できます。 次の表は、プロパティ ページのすべての DDP_ 関数とその用途の一覧です。
プロパティ ページの関数
関数名 |
関連付ける対象 |
---|---|
DDP_CBIndex |
コントロール プロパティを持つコンボ ボックス内の選択した文字列のインデックス。 |
DDP_CBString |
コントロール プロパティを持つコンボ ボックス内の選択した文字列。 選択された文字列はプロパティの値と同じ文字から始まっている必要がありますが、すべてが一致していなくてもかまいません。 |
DDP_CBStringExact |
コントロール プロパティを持つコンボ ボックス内の選択した文字列。 選択された文字列とプロパティの文字列値が完全に一致している必要があります。 |
DDP_Check |
コントロール プロパティを持つチェック ボックス。 |
DDP_LBIndex |
コントロール プロパティを持つリスト ボックス内の選択した文字列のインデックス。 |
DDP_LBString |
コントロール プロパティを持つリスト ボックス内の選択した文字列。 選択された文字列はプロパティの値と同じ文字から始まっている必要がありますが、すべてが一致していなくてもかまいません。 |
DDP_LBStringExact |
コントロール プロパティを持つリスト ボックス内の選択した文字列。 選択された文字列とプロパティの文字列値が完全に一致している必要があります。 |
DDP_Radio |
コントロール プロパティを持つオプション ボタン。 |
DDP_Text |
コントロール プロパティを持つテキスト。 |