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


Функция OleCreate (ole2.h)

Создает внедренный объект, идентифицируемый идентификатором CLSID. Обычно он используется для реализации пункта меню, который позволяет конечному пользователю вставить новый объект.

Синтаксис

HRESULT OleCreate(
  [in]  REFCLSID        rclsid,
  [in]  REFIID          riid,
  [in]  DWORD           renderopt,
  [in]  LPFORMATETC     pFormatEtc,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

Параметры

[in] rclsid

CLSID создаваемого внедренного объекта.

[in] riid

Ссылка на идентификатор интерфейса, обычно IID_IOleObject (определяется в заголовках OLE как идентификатор интерфейса для IOleObject), через который вызывающий объект будет взаимодействовать с новым объектом.

[in] renderopt

Значение из перечисления OLERENDER, указывающее возможности локально кэшированного рисования, которые должен иметь только что созданный объект. Выбранное значение OLERENDER влияет на возможные значения для параметра pFormatEtc .

[in] pFormatEtc

В зависимости от того, какой из флагов OLERENDER используется в качестве значения renderopt, указатель на одно из значений перечисления FORMATETC . Ограничения см. в перечислении OLERENDER . Этот параметр вместе с параметром renderopt указывает, что новый объект может кэшировать изначально.

[in] pClientSite

Если требуется, чтобы OleCreate вызывал IOleObject::SetClientSite, наведите указатель на интерфейс IOleClientSite в контейнере. Значение может иметь значение NULL. В этом случае необходимо специально вызвать IOleObject::SetClientSite перед попыткой выполнения операций.

[in] pStg

Указатель на экземпляр интерфейса IStorage в объекте хранилища. Этот параметр может не иметь значение NULL.

[out] ppvObj

Адрес переменной указателя, которая получает указатель интерфейса, запрошенный в riid. После успешного возврата *ppvObject содержит запрошенный указатель интерфейса.

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

Эта функция возвращает S_OK об успешном выполнении и поддерживает стандартное возвращаемое значение E_OUTOFMEMORY.

Код возврата Описание
E_OUTOFMEMORY
Недостаточно памяти для операции.

Комментарии

Функция OleCreate создает новый внедренный объект и обычно вызывается для реализации пункта меню Вставка нового объекта. При возврате OleCreate созданный объект будет пустым (не содержит данных), если только не OLERENDER_DRAW или OLERENDER_FORMAT renderopt и не загружен. Контейнеры обычно вызывают функцию OleRun или IOleObject::D oVerb , чтобы отобразить объект для первоначального редактирования.

Параметр rclsid указывает CLSID запрошенного объекта. Идентификаторы CLSID зарегистрированных объектов хранятся в системном реестре. Когда пользователь приложения выбирает команду Вставить объект, поле выбора позволяет пользователю выбрать нужный тип объекта из реестра. Если для реализации элемента меню Вставка объекта используется OleCreate , идентификатор CLSID, связанный с выбранным элементом, назначается параметру rclsid объекта OleCreate.

Параметр riid указывает интерфейс, который клиент будет использовать для взаимодействия с новым объектом. После успешного возврата параметр ppvObject содержит указатель на запрошенный интерфейс.

Кэш созданного объекта содержит сведения, которые позволяют представление автономного объекта при открытии контейнера. Сведения о том, что следует кэшировать, передаются в значениях renderopt и pFormatetc . При возврате OleCreate кэш созданного объекта не обязательно заполняется. Вместо этого кэш заполняется при первом переходе объекта в состояние выполнения. Вызывающий объект может добавить дополнительный элемент управления кэшем с помощью вызова IOleCache::Cache после возврата OleCreate и перед запуском объекта. Если renderopt OLERENDER_DRAW или OLERENDER_FORMAT, OleCreate требует, чтобы объект поддерживал интерфейс IOleCache . Такого требования для любого другого значения renderopt не существует.

Если pClientSite не равно NULL, OleCreate вызывает IOleObject::SetClientSite через указатель pClientSite . IOleClientSite — это основной интерфейс, с помощью которого объект запрашивает службы из своего контейнера. Если pClientSite имеет значение NULL, необходимо выполнить определенный вызов IOleObject::SetClientSite перед попыткой выполнения каких-либо операций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ole2.h (включая Ole2.h)
Библиотека Ole32.lib
DLL Ole32.dll

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

FORMATETC

IOleClientSite

IOleObject

OLERENDER