Share via


ビジュアル表現

コントロールは、複合ドキュメント テクノロジと、コントロールとそのコンテナーの両方を含む OLE ドラッグ アンド ドロップ テクノロジを使用して、コンテナー内での配置と表示をサポートします。 コンテナーがコントロールの位置とそのサイズを管理している間、コントロール自体を描画できる必要があります。

コントロールは、OLE ドキュメントによって提供される基本的な関数に追加されます。 コントロールは、クライアントの IOleClientSite::RequestNewObjectLayout メソッドを呼び出して、サイズを変更することをコンテナーに通知します。 クライアントは、コントロールの IOleObject::GetExtent を呼び出して、新しいサイズを取得し、 IOleInPlaceObject::SetObjectRects を呼び出して、コントロールを新しいサイズに設定します。

IPersistStream または IPersistStreamInit のみをサポートするコントロールでは、 IOleCache2 を介したキャッシュはサポートされません。キャッシュには IPersistStorage のサポートが必要であるためです。 ただし、これらのコントロールは、クライアントが必要に応じてコントロールのプレゼンテーション データの独自のキャッシュを作成および管理できるように、 IDataObject::GetData を介してコントロールをレンダリングする方法を提供する必要があります。

コントロールは、その座標に HIMETRIC 型を使用します。 ただし、コンテナーごとに異なる座標系を使用できます。 コンテナーは独自のシステムで座標を受け取りたいと考えていますが、コントロールは、そのコンテナーが使用している座標を必ずしも認識しません。 正常に通信するには、コントロールが値をコンテナーの座標に変換する方法が必要です。 コンテナーは、 IOleControlSite::TransformCoords メソッドを 使用してサイト オブジェクトを提供します 。 コントロールは、最初にコンテナーのクライアント サイトでこのメソッドを呼び出して、その座標をコンテナーの適切な座標に変換します。 その後、変換された座標をコンテナーに渡すことができます。

コントロールは、コンテナーのサイト オブジェクトで IOleControlSite::LockInPlaceActive を呼び出して、コンテナーがインプレースアクティブ状態からコントロールを降格することを防ぐことができます。 この方法でコントロールを降格すると、コントロールが非アクティブになり、ウィンドウが破棄されます。そのため、コントロールが既知の期間ウィンドウメイン保持する必要がある場合は、 LockInPlaceActive を呼び出して状態を保証できます。

ActiveX コントロール