コントロールがアンビエント プロパティをまったくサポートしている場合は、標準の dispid を使用して、次の表に示す条件の下で、少なくとも次のアンビエント プロパティの値を考慮する必要があります。
| Ambient プロパティ | Dispid | 使用するコメント/条件 |
|---|---|---|
| LocaleID |
-705 |
ロケールがコントロールにとって重要な場合 (テキスト出力など) |
| UserMode |
-709 |
ユーザー (デザイン) モードと実行モードでコントロールの動作が異なる場合 |
| UIDead |
-710 |
コントロールが UI イベントに反応する場合は、このアンビエント プロパティを優先する必要があります |
| ShowGrabHandles |
-711 |
コントロールがそれ自体のインプレース サイズ変更をサポートしている場合 |
| ShowHatching |
-712 |
コントロールがインプレース アクティブ化と UI アクティブ化をサポートしている場合 |
| DisplayAsDefault |
-713 |
コントロールがOLEMISC_ACTSLIKEBUTTONマークされている場合にのみ (つまり、キーボードニーモニックのサポートが提供されるため、IOleControl::GetControlInfoをし、IOleControl::OnMnemonicを実装する必要があります)。 |
前に説明したように、アンビエントの使用には、IOleControl (OnAmbientPropertyChange を最小限に抑える ) と、IOleObject (SetClientSite と GetClientSiteの) の両方が必要です。
OLEMISC_SETCLIENTSITEFIRST ビットは、必ずしもコンテナーでサポートされるとは限りません。 このような状況では、コントロールは、必要なアンビエント プロパティの既定値に頼る必要があります。