Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает внедренный объект, идентифицируемый идентификатором 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 |