次の方法で共有


MFC ActiveX コントロール : アンビエント プロパティへのアクセス

この技術情報では、 ActiveX コントロールがコントロール コンテナーのアンビエント プロパティにアクセスする方法について説明します。

コントロールは、コンテナーのアンビエント プロパティにアクセスすると、コンテナーに関する情報を取得できます。これらのプロパティは、コンテナーがユーザー モードまたはデザイナーのモードにするかどうかをコンテナーの背景色、コンテナーによって、運用特性使用される、現在のフォントなどの視覚的特性 (など)を公開します。コントロールに埋め込まれる特定のコンテナーに外観と動作をするためにアンビエント プロパティを使用できます。ただし、コントロールは、コンテナーが特定のアンビエント プロパティをサポートすると仮定できません。実際には、コンテナーはアンビエント プロパティをまったくサポートされない場合があります。アンビエント プロパティがない場合、コントロールは適切な既定値を想定する必要があります。

アンビエント プロパティにアクセスするには、 COleControl::GetAmbientPropertyに呼び出しを作成します。この関数は、最初のパラメーターとしてアンビエント プロパティのディスパッチ ID が必要です (ファイル OLECTL.H はアンビエント プロパティの既定の設定のディスパッチ ID を定義します)。

GetAmbientProperty の関数のパラメーターはディスパッチ ID、値を返す必要があるメモリが予測されるプロパティ型、ポインターを表示する複数のタグです。このポインターが関係しているデータの型は異なるタグによって異なります。関数の戻り値 TRUE コンテナー サポート プロパティ、それ以外の場合は FALSEを返します。

次のコード例は、 Get 「という UserMode アンビエント プロパティの値を」とプロパティがコンテナーでサポートされていない場合、 TRUE の既定値を前提にしています:

BOOL bUserMode;
if(!GetAmbientProperty( DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
   bUserMode = TRUE;

利便性のために、 COleControl は、プロパティを使用できない場合によく使用されるアンビエント プロパティの多くに、および戻り値の適切な既定値にアクセスするヘルパー関数を指定します。これらのヘルパー関数は次のとおりです。:

アンビエント プロパティの値が (コンテナーの操作によって)変更すると、コントロールの OnAmbientPropertyChanged のメンバー関数が呼び出されます。このような通知を処理するには、このメンバー関数をオーバーライドします。OnAmbientPropertyChanged のパラメーターでは、影響を受けるアンビエント プロパティのディスパッチ ID です。この示すディスパッチ ID の値はプロパティの影響を受けたことを DISPID_UNKNOWN一つ以上のアンビエント プロパティは変更されますが、情報は使用できません。

参照

概念

MFC ActiveX コントロール