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實作,或未調整大小。 |
|
未實作這個方法。 |
備註
有兩種調整控制項大小的一般方法。 第一種方法可讓控制責任自行調整大小;第二種方法可讓容器負責調整控制項的大小。 第一種方法稱為自動調整大小。 第二種方法涉及兩種替代方法:內容調整大小和整數調整大小。
IViewObjectEx::GetNaturalExtent方法同時支援內容和整數調整大小。 在內容調整大小中,容器會將 DVEXTENTINFO 結構傳遞至物件,物件會傳回建議的大小。 在整數大小調整中,容器會將慣用的大小傳遞給 DVEXTENTINFO中的物件,而物件實際上會調整其高度。 當使用者在設計模式中建立新大小時,會使用整數調整大小。
自動調整大小通常會發生在標籤控制項之類的物件上,如果已啟用自動調整大小屬性且相關聯的文字已變更,則會調整大小。 根據物件的狀態,自動調整大小會以不同的方式處理。
如果物件處於非使用中狀態,就會發生下列情況:
- 物件會呼叫 IOleClientSite::RequestNewObjectLayout。
- 容器會呼叫 IOleObject::GetExtent 並擷取新的範圍。
- 容器會呼叫 IOleObject::SetExtent 並調整新的範圍。
- 物件會呼叫 IOleInPlaceSite::OnPosRectChange 來指定它需要調整大小。
- 容器會呼叫 IOleInPlaceObject::SetObjectRects ,並指定新的大小。
需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | ocidl.h |
另請參閱
IOleClientSite::RequestNewObjectLayout
IOleInPlaceObject::SetObjectRects