IViewObjectEx::GetNaturalExtent メソッド (ocidl.h)

オブジェクトのコンテナーから、ユーザーがオブジェクトのサイズを変更するときに使用するサイズ設定のヒントを提供します。

構文

HRESULT GetNaturalExtent(
  [in]  DWORD          dwAspect,
  [in]  LONG           lindex,
  [in]  DVTARGETDEVICE *ptd,
  [in]  HDC            hicTargetDev,
  [in]  DVEXTENTINFO   *pExtentInfo,
  [out] LPSIZEL        pSizel
);

パラメーター

[in] dwAspect

要求された描画の側面。 DVASPECT 列挙によって定義される次の値のいずれかを指定できます。

説明
DVASPECT_CONTENT
コンテナー内の埋め込みオブジェクトとして表示できるように、コントロールの表現を指定します。 この値は通常、複合ドキュメント オブジェクトに指定されます。 この表示形式は、画面またはプリンターに対して指定できます。
DVASPECT_DOCPRINT
[ファイル] メニューの [印刷] コマンドを使用してプリンターに印刷されたかのように、画面上のコントロールの表現を指定します。 記述されるデータでページのシーケンスを表現できます。
DVASPECT_ICON
コントロールの象徴的な表現を提供します。
DVASPECT_THUMBNAIL
オブジェクトを参照ツールで表示できるように、オブジェクトのサムネイル表示を指定します。 サムネイルは約 120 x 120 ピクセルで、メタファイルにラップされる可能性がある 16 色 (推奨) のデバイスに依存しないビットマップです。

[in] lindex

描画操作の対象となるオブジェクトの部分を示します。 その解釈は、 dwAspect パラメーターの値によって異なります。 詳細については、 DVASPECT 列挙を参照してください。

[in] ptd

オブジェクトがレンダリングされるデバイスを記述するターゲット デバイス構造へのポインター。 NULL の場合は、既定のターゲット デバイス (通常は表示) に対してビューをレンダリングする必要があります。 NULL 以外の値は、hicTargetDev および hdcDraw と組み合わせて解釈されます。 たとえば、 hdcDraw で プリンターがデバイス コンテキストとして指定されている場合、 ptd パラメーターはそのプリンター デバイスを記述する構造体を指します。 hicTargetDev が有効な値である場合は、データが実際に印刷される場合があります。また、hicTargetDevNULL の場合は印刷プレビュー モードで表示される場合があります。

[in] hicTargetDev

オブジェクトがデバイス メトリックを抽出し、デバイスの機能をテストできる ptd パラメーターによって示されるターゲット デバイスの情報コンテキストを指定します。 ptdNULL の場合。オブジェクトは hicTargetDev パラメーターの値を無視する必要があります。

[in] pExtentInfo

サイズ設定データを指定する DVEXTENTINFO 構造体へのポインター。

[out] pSizel

オブジェクトによって返されるサイズ変更データへのポインター。 返されるサイズ変更データは、調整されなかったディメンションに対して -1 に設定されます。 つまり 、cx が -1 の場合、幅は調整されませんでした。 cy が -1 の場合、高さは調整されませんでした。 サイズが調整されていないことを示すE_FAILが返された場合、 pSizelNULL になる可能性があります。

戻り値

このメソッドは、成功したS_OKを返します。 その他の可能な戻り値は次のとおりです。

リターン コード 説明
E_FAIL
このメソッドは、指定した dwAspect に対して実装されていないか、サイズが調整されていません。
E_NOTIMPL
このメソッドは実装されませんでした。

解説

コントロールのサイズを変更するには、2 つの一般的な方法があります。 最初のアプローチでは、サイズ設定自体を制御する責任があります。2 つ目の方法では、コントロールのサイズを変更するコンテナーの責任が与えられます。 最初のアプローチは、自動サイズ設定と呼ばれます。 2 つ目の方法には、コンテンツのサイズ設定と整数のサイズ設定という 2 つの選択肢があります。

IViewObjectEx::GetNaturalExtent メソッドは、コンテンツと整数のサイズ設定の両方をサポートしています。 コンテンツのサイズ設定では、コンテナーは DVEXTENTINFO 構造体をオブジェクトに渡し、オブジェクトが推奨サイズを返します。 整数サイズ設定では、コンテナーは DVEXTENTINFO 内のオブジェクトに優先サイズを渡し、オブジェクトは実際にその高さを調整します。 整数サイズ設定は、ユーザーがデザイン モードで新しいサイズをラバーバンドするときに使用されます。

自動サイズ設定は、通常、Autosize プロパティが有効で、関連するテキストが変更された場合にサイズを変更する Label コントロールなどのオブジェクトで発生します。 自動サイズ設定は、オブジェクトの状態によって異なる方法で処理されます。

オブジェクトが非アクティブな場合は、次の処理が行われます。

  1. オブジェクトは IOleClientSite::RequestNewObjectLayout を呼び出します。
  2. コンテナーは IOleObject::GetExtent を 呼び出し、新しいエクステントを取得します。
  3. コンテナーは IOleObject::SetExtent を呼び出し、新しいエクステントを調整します。
オブジェクトがアクティブな場合は、次の処理が行われます。
  1. オブジェクトは IOleInPlaceSite::OnPosRectChange を 呼び出して、サイズ変更が必要であることを指定します。
  2. コンテナーは IOleInPlaceObject::SetObjectRects を呼び出し、新しいサイズを指定します。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ocidl.h

関連項目

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx