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 列挙によって定義される次の値のいずれかを指定できます。
[in] lindex
描画操作の対象となるオブジェクトの部分を示します。 その解釈は、 dwAspect パラメーターの値によって異なります。 詳細については、 DVASPECT 列挙を参照してください。
[in] ptd
オブジェクトがレンダリングされるデバイスを記述するターゲット デバイス構造へのポインター。 NULL の場合は、既定のターゲット デバイス (通常は表示) に対してビューをレンダリングする必要があります。 NULL 以外の値は、hicTargetDev および hdcDraw と組み合わせて解釈されます。 たとえば、 hdcDraw で プリンターがデバイス コンテキストとして指定されている場合、 ptd パラメーターはそのプリンター デバイスを記述する構造体を指します。 hicTargetDev が有効な値である場合は、データが実際に印刷される場合があります。また、hicTargetDev が NULL の場合は印刷プレビュー モードで表示される場合があります。
[in] hicTargetDev
オブジェクトがデバイス メトリックを抽出し、デバイスの機能をテストできる ptd パラメーターによって示されるターゲット デバイスの情報コンテキストを指定します。 ptd が NULL の場合。オブジェクトは hicTargetDev パラメーターの値を無視する必要があります。
[in] pExtentInfo
サイズ設定データを指定する DVEXTENTINFO 構造体へのポインター。
[out] pSizel
オブジェクトによって返されるサイズ変更データへのポインター。 返されるサイズ変更データは、調整されなかったディメンションに対して -1 に設定されます。 つまり 、cx が -1 の場合、幅は調整されませんでした。 cy が -1 の場合、高さは調整されませんでした。 サイズが調整されていないことを示すE_FAILが返された場合、 pSizel は NULL になる可能性があります。
戻り値
このメソッドは、成功したS_OKを返します。 その他の可能な戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
このメソッドは、指定した dwAspect に対して実装されていないか、サイズが調整されていません。 |
|
このメソッドは実装されませんでした。 |
解説
コントロールのサイズを変更するには、2 つの一般的な方法があります。 最初のアプローチでは、サイズ設定自体を制御する責任があります。2 つ目の方法では、コントロールのサイズを変更するコンテナーの責任が与えられます。 最初のアプローチは、自動サイズ設定と呼ばれます。 2 つ目の方法には、コンテンツのサイズ設定と整数のサイズ設定という 2 つの選択肢があります。
IViewObjectEx::GetNaturalExtent メソッドは、コンテンツと整数のサイズ設定の両方をサポートしています。 コンテンツのサイズ設定では、コンテナーは DVEXTENTINFO 構造体をオブジェクトに渡し、オブジェクトが推奨サイズを返します。 整数サイズ設定では、コンテナーは DVEXTENTINFO 内のオブジェクトに優先サイズを渡し、オブジェクトは実際にその高さを調整します。 整数サイズ設定は、ユーザーがデザイン モードで新しいサイズをラバーバンドするときに使用されます。
自動サイズ設定は、通常、Autosize プロパティが有効で、関連するテキストが変更された場合にサイズを変更する Label コントロールなどのオブジェクトで発生します。 自動サイズ設定は、オブジェクトの状態によって異なる方法で処理されます。
オブジェクトが非アクティブな場合は、次の処理が行われます。
- オブジェクトは IOleClientSite::RequestNewObjectLayout を呼び出します。
- コンテナーは IOleObject::GetExtent を 呼び出し、新しいエクステントを取得します。
- コンテナーは IOleObject::SetExtent を呼び出し、新しいエクステントを調整します。
- オブジェクトは IOleInPlaceSite::OnPosRectChange を 呼び出して、サイズ変更が必要であることを指定します。
- コンテナーは IOleInPlaceObject::SetObjectRects を呼び出し、新しいサイズを指定します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ocidl.h |
関連項目
IOleClientSite::RequestNewObjectLayout
IOleInPlaceObject::SetObjectRects