共用方式為


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以外的值會與hicTargetDevhdcDraw一起解譯。 例如,如果 hdcDraw 將印表機指定為裝置內容, ptd 參數會指向描述該印表機裝置的結構。 如果 hicTargetDev 是有效的值,或如果 hicTargetDevNull,資料可能會實際列印在預覽列印模式中。

[in] hicTargetDev

指定 ptd 參數所指示的目標裝置資訊內容,該參數可從中擷取裝置計量並測試裝置的功能。 如果 ptdNull;物件應該忽略 hicTargetDev 參數中的值。

[in] pExtentInfo

指定調整大小資料的 DVEXTENTINFO 結構的指標。

[out] pSizel

物件所傳回調整大小資料的指標。 傳回的大小調整資料會針對未調整的任何維度設定為 -1。 也就是說,如果 cx 為 -1,則寬度未調整,如果 cy 為 -1,則不會調整高度。 如果傳回E_FAIL表示未調整任何大小, 則 pSizel 可能是 Null

傳回值

此方法會在成功時傳回S_OK。 其他可能的傳回值包括下列專案。

傳回碼 描述
E_FAIL
這個方法不會針對指定的 dwAspect實作,或未調整大小。
E_NOTIMPL
未實作這個方法。

備註

有兩種調整控制項大小的一般方法。 第一種方法可讓控制責任自行調整大小;第二種方法可讓容器負責調整控制項的大小。 第一種方法稱為自動調整大小。 第二種方法涉及兩種替代方法:內容調整大小和整數調整大小。

IViewObjectEx::GetNaturalExtent方法同時支援內容和整數調整大小。 在內容調整大小中,容器會將 DVEXTENTINFO 結構傳遞至物件,物件會傳回建議的大小。 在整數大小調整中,容器會將慣用的大小傳遞給 DVEXTENTINFO中的物件,而物件實際上會調整其高度。 當使用者在設計模式中建立新大小時,會使用整數調整大小。

自動調整大小通常會發生在標籤控制項之類的物件上,如果已啟用自動調整大小屬性且相關聯的文字已變更,則會調整大小。 根據物件的狀態,自動調整大小會以不同的方式處理。

如果物件處於非使用中狀態,就會發生下列情況:

  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