コンテナーの機能の使用
前のセクションでは、コンテナーの特定の機能にアクセスするために ActiveX コントロールに必要な呼び出し元側のサポートについて説明しました。 次の表では、コンテナー側インターフェイスのコントロールの使用方法と、そのような使用が発生するタイミングについて説明します。
インターフェイス | Container オブジェクト | 使用方法 |
---|---|---|
IOleClientSite |
サイト |
IOleObject を実装するコントロールは、標準の OLE 埋め込みプロトコルの一部として IOleClientSite メソッドを呼び出します。具体的には、 SaveObject、 ShowObject、 OnShowWindow (別ウィンドウのアクティブ化状態がサポートされている場合のみ)、 RequestNewObjectLayout、 および GetContainer (他のコントロールとの通信が必要な場合) の各メソッドを呼び出します。 GetMoniker メソッドは、コントロールを外部にリンクできる場合、つまりコントロールが OLEMISC_CANTLINKINSIDE でマークされていない場合にのみ使用されます。 |
IOleInPlaceSite |
サイト |
インプレース アクティブ化があり、場合によっては UI アクティブ状態のコントロールは、標準の OLE インプレース アクティブ化プロトコルの一部として IOleInPlaceSite メソッド (通常は ContextSensitiveHelpを除くすべてのメソッド) を呼び出します。 |
IAdviseSink |
サイト |
コントロールが IDataObject をサポートしている場合は OnDataChange、コントロールが IViewObject2 をサポートしている場合は OnViewChange、コントロールが IOleObject をサポートしている場合は OnClose、 OnSave、 OnRename を呼び出します。 |
IOleControlSite |
サイト |
サポートされている場合、コントロールは、ニーモニックが変更されたときに OnControlInfoChanged を呼び出し、イベントが発生したときに LockInPlaceActive と TransformCoords を呼び出し (後者のメソッドは、座標がイベント引数として渡された場合にのみ使用されます)、コントロールに UI アクティブ状態がある場合は OnFocus と TranslateAccelerator を呼び出し、コントロールが拡張コントロール (コンテナ所有) プロパティを見たい場合は GetExtendedControl を呼び出します。 |
IDispatch (アンビエントプロパティ) |
サイト |
アンビエント プロパティにアクセスするために使用されます。 |
IPropertyNotifySink |
可変 |
コントロールは、[バインド可能] と [request] としてマークされているコントロール プロパティに対して、それぞれ OnChanged と OnRequestEdit を生成する必要があります。 |
その他のイベント シンク インターフェイス |
可変 |
IPropertyNotifySink 以外の送信インターフェイスを持つコントロールは、正しい IID の他のインターフェイスポインタが、コントロールの IConnectionPoint::Advise 実装 (通常はコントロールのサブオブジェクト内にあります) に渡されます。 コントロールではそれらのインターフェイスが定義されているため、コントロールは常に独自のイベント インターフェイスを呼び出す方法を認識します。 |
IOleInPlaceFrame |
フレーム |
フレーム レベルのツールまたはメニュー項目を必要とするインプレース UI のアクティブな状態がコントロールにある場合に使用されます。 |
IOleInPlaceUIWindow |
Document |
ドキュメント レベルまたはウィンドウ レベルの UI ツールを必要とするインプレース UI のアクティブな状態がコントロールにある場合にのみ使用されます。 これは稀なケースです。 |