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

Создает статический объект, содержащий только представление без собственных данных из объекта передачи данных.

Примечание Функции преобразования OLESTREAM в IStorage также преобразуют статические объекты.
 

Синтаксис

HRESULT OleCreateStaticFromData(
  [in]  LPDATAOBJECT    pSrcDataObj,
  [in]  REFIID          iid,
  [in]  DWORD           renderopt,
  [in]  LPFORMATETC     pFormatEtc,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

Параметры

[in] pSrcDataObj

Указатель на интерфейс IDataObject на объекте передачи данных, который содержит данные, из которых будет создан объект.

[in] iid

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

[in] renderopt

Значение из перечисления OLERENDER , указывающее возможности локально кэшированного рисования или извлечения данных, которые нужны контейнеру во вновь созданном компоненте. Передача параметров отрисовки OLERENDER_NONE или OLERENDER_ASIS в эту функцию является ошибкой.

[in] pFormatEtc

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

[in] pClientSite

Указатель на экземпляр IOleClientSite, основной интерфейс, через который объект запрашивает службы из своего контейнера. Этот параметр может принимать значение NULL.

[in] pStg

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

[out] ppvObj

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

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

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

Комментарии

Функция OleCreateStaticFromData может преобразовать любой объект, если она предоставляет интерфейс IDataObject , в статический объект. Это полезно при реализации параметра Преобразовать в рисунок для связывания или внедрения OLE.

Статические объекты можно создавать, только если источник поддерживает один из форматов буфера обмена, отображаемых OLE: CF_METAFILEPICT, CF_DIB или CF_ BITMAP и CF_ENHMETAFILE.

Вы также можете вызвать OleCreateStaticFromData , чтобы вставить статический объект из буфера обмена. Чтобы определить, является ли объект статическим, вызовите функцию OleQueryCreateFromData , которая возвращает OLE_S_STATIC, если присутствует один из CF_METAFILEPICT, CF_DIB, CF_BITMAP или CF_ENHMETAFILE, а формат OLE отсутствует. Это означает, что для создания объекта следует вызывать OleCreateStaticFromData , а не функцию OleCreateFromData .

Новый статический объект имеет класс CLSID_StaticMetafile в случае CF_METAFILEPICT, CLSID_StaticDib в случае CF_DIB или CF_BITMAP или CLSID_Picture_EnhMetafile в случае CF_ENHMETAFILE. Статический объект задает OLEMISC_STATIC и OLE_CANTLINKINSIDE биты, возвращаемые из IOleObject::GetMiscStatus. Статический объект будет иметь аспект DVASPECT_CONTENT и LINDEX -1.

PSrcDataObject по-прежнему действителен после возврата OleCreateStaticFromData. Ответственность за освобождение pSrcDataObject лежит на вызывающем объекте. OLE не освобождает его.

В статическом объекте не может быть более одного потока представления.

Требования

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

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

OleCreateFromData