Поделиться через


Метод IRunnableObject::SetContainedObject (objidl.h)

Уведомляет объект о том, что он внедрен в контейнер OLE, что гарантирует правильное подсчет ссылок для контейнеров, поддерживающих ссылки на внедренные объекты.

Синтаксис

HRESULT SetContainedObject(
  [in] BOOL fContained
);

Параметры

[in] fContained

Значение TRUE указывает, что объект содержится в контейнере OLE. FALSE указывает, что это не так.

Возвращаемое значение

Этот метод может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED и S_OK.

Комментарии

Метод SetContainedObject позволяет контейнеру сообщать обработчику объектов о том, что он внедрен в контейнер, а не выступать в качестве ссылки. Этот вызов изменяет ссылку контейнера на объект со strong, используемой по умолчанию для внешних подключений, на слабую. Когда объект выполняется заметно, этот метод не имеет большого значения, так как у конечного пользователя есть блокировка объекта. Однако при автоматическом обновлении внедренного источника ссылки контейнер не должен содержать объект в состоянии выполнения после того, как ссылка была нарушена. По этой причине ссылка контейнера на объект должна быть слабой.

Примечания к вызывающим абонентам

Контейнерное приложение должно вызывать SetContainedObject , если оно поддерживает связывание с внедренными объектами. Обычно он выполняет вызов сразу после вызова OleLoad или OleCreate и никогда не вызывает метод снова, даже до того, как он закроется. Кроме того, контейнер почти всегда вызывает этот метод, если для параметра fContained задано значение TRUE. Этот метод используется редко, если для параметра fContained задано значение FALSE .

Вызов SetContainedObject необязателен, только если известно, что на внедренный объект не будет ссылаться ни один клиент, кроме контейнера. Если приложение-контейнер не поддерживает связывание с внедренным объектами; Предпочтительно, но необязательно вызывать SetContainedObject.

OleSetContainedObject — это вспомогающая функция, которая удобно переупаковывает функциональные возможности SetContainedObject. С выпуском OLE 2.01 реализация OleSetContainedObject была изменена для вызова QueryInterface, запроса IRunnableObject, а затем вызова IRunnableObject::SetContainedObject. Другими словами, интерфейс и вспомогательная функция можно использовать взаимозаменяемо.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

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

IRunnableObject

OleSetContainedObject