IOleObject::SetExtent 方法 (oleidl.h)

通知对象其容器为其分配了多少显示空间。

语法

HRESULT SetExtent(
  [in] DWORD dwDrawAspect,
  [in] SIZEL *psizel
);

参数

[in] dwDrawAspect

描述要显示对象的哪个形式或“方面”的 DWORD。 对象的容器从枚举 DVASPECT 获取此值, (引用 FORMATETC 枚举) 。 最常见的方面是DVASPECT_CONTENT,它指定对象在其容器中的完整呈现。 对象还可以呈现为图标、用于在浏览工具中显示的缩略图版本或打印版本,后者使用 “文件打印” 命令呈现对象时显示对象。

[in] psizel

指向对象的大小限制的指针。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
E_FAIL
此操作失败。
OLE_E_NOTRUNNING
对象未运行。

注解

当容器需要向嵌入对象指定显示大小时,容器会调用 IOleObject::SetExtent 。 通常,此调用是响应最终用户调整对象窗口的大小。 收到调用后,对象应尽可能正常地自行重构,以适应新窗口。

只要有可能,容器会寻求以最佳分辨率显示对象,有时称为对象的本机大小。 但是,所有对象都具有由其应用程序指定的默认显示大小,在没有其他约束的情况下,这是它们用于显示自己的大小。 由于对象比容器更了解其最佳显示大小,后者通常通过调用 IOleObject::SetExtent 从正在运行的对象请求该大小。 仅当容器无法容纳对象返回的值时,它才会通过调用 IOleObject::SetExtent 替代对象的首选项。

给调用方的说明

仅当对象正在运行时,才能对对象调用 IOleObject::SetExtent 。 如果容器在对象未运行时调整对象的大小,则容器应跟踪对象的新大小,但会延迟调用 IOleObject::SetExtent ,直到用户激活对象。 如果在对象上设置了OLEMISC_RECOMPOSEONRESIZE位,则其容器应在调用 IOleObject::SetExtent 之前强制运行对象。

如上所述,容器可能希望通过调用 IOleObject::SetExtent 将对象显示站点大小设置的责任委托给对象本身。

实施者说明

你可能希望实现此方法,以便对象重新缩放自身,使其尽可能接近其容器中可用的最大空间。

如果对象的大小是固定的,也就是说,如果无法由其容器设置, 则 IOleObject::SetExtent 应返回E_FAIL。 链接对象始终如此,其大小由链接源而不是容器设置。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oleidl.h

另请参阅

IAdviseSink::OnViewChange

IOleObject

IOleObject::GetExtent

IViewObject2::GetExtent