IViewObjectEx::GetNaturalExtent 方法 (ocidl.h)

从容器中提供对象的大小调整提示,供用户在调整对象大小时使用。

语法

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

parameters

[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 中的 对象,而对象实际上会调整其高度。 当用户在设计模式下对新尺寸进行橡皮带时,将使用整型大小调整。

自动调整大小通常发生在诸如 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