ビジュアル表現
コントロールは、複合ドキュメント テクノロジと、コントロールとそのコンテナーの両方を含む OLE ドラッグ アンド ドロップ テクノロジを使用して、コンテナー内での配置と表示をサポートします。 コンテナーがコントロールの位置とそのサイズを管理している間、コントロール自体を描画できる必要があります。
コントロールは、OLE ドキュメントによって提供される基本的な関数に追加されます。 コントロールは、クライアントの IOleClientSite::RequestNewObjectLayout メソッドを呼び出して、サイズを変更することをコンテナーに通知します。 クライアントは、コントロールの IOleObject::GetExtent を呼び出して新しいサイズを取得し、IOleInPlaceObject::SetObjectRects を呼び出して、コントロールを新しいサイズに設定します。
IPersistStream または IPersistStreamInitのみをサポートするコントロールでは、IOleCache2 を介したキャッシュはサポートされません。キャッシュには IPersistStorageサポートが必要です。 ただし、これらのコントロールは、クライアントが必要に応じてコントロールのプレゼンテーション データの独自のキャッシュを作成および管理できるように、IDataObject::GetData を介してコントロールをレンダリングする方法を提供する必要があります。
コントロールは、その座標に HIMETRIC 型を使用します。 ただし、コンテナーごとに異なる座標系を使用できます。 コンテナーは独自のシステムで座標を受け取りたいと考えていますが、コントロールは、そのコンテナーが使用している座標を必ずしも認識しません。 正常に通信するには、コントロールが値をコンテナーの座標に変換する方法が必要です。 コンテナーは、IOleControlSite::TransformCoords メソッドを使用してサイト オブジェクトを提供します。 コントロールは、最初にコンテナーのクライアント サイトでこのメソッドを呼び出して、その座標をコンテナーの適切な座標に変換します。 その後、変換された座標をコンテナーに渡すことができます。
コントロールは、コンテナーのサイト オブジェクト IOleControlSite::LockInPlaceActive を呼び出して、コンテナーがインプレースアクティブ状態からコントロールを降格することを防ぐことができます。 この方法でコントロールを降格すると、コントロールが非アクティブになり、ウィンドウが破棄されるため、コントロールが既知の期間ウィンドウを維持する必要がある場合は、LockInPlaceActive を呼び出して状態を保証できます。
関連トピック
-
ActiveX コントロール の