Метод 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
Header oleidl.h

См. также раздел

IAdviseSink::OnViewChange

IOleObject

IOleObject::GetExtent

IViewObject2::GetExtent