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 枚举定义。
[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 中的 对象,而对象实际上会调整其高度。 当用户在设计模式下对新尺寸进行橡皮带时,将使用整型大小调整。
自动调整大小通常发生在诸如 Label 控件之类的对象中,如果启用自动大小属性且关联的文本更改,该控件会调整大小。 根据对象的状态,自动调整大小的方式会有所不同。
如果对象处于非活动状态,则会发生以下情况:
- 对象调用 IOleClientSite::RequestNewObjectLayout。
- 容器调用 IOleObject::GetExtent 并检索新盘区。
- 容器调用 IOleObject::SetExtent 并调整新盘区。
- 对象调用 IOleInPlaceSite::OnPosRectChange 以指定它需要调整大小。
- 容器调用 IOleInPlaceObject::SetObjectRects 并指定新大小。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ocidl.h |
请参阅
IOleClientSite::RequestNewObjectLayout
IOleInPlaceObject::SetObjectRects