Функция 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.
Код возврата | Описание |
---|---|
|
Недостаточно памяти для операции. |
Комментарии
Функция 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 |