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


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

Функция OleConvertOLESTREAMToIStorage преобразует указанный объект из модели хранения OLE 1 в объект структурированного хранилища OLE 2 без указания данных представления.

Примечание Это одна из нескольких функций совместимости.
 

Синтаксис

HRESULT OleConvertOLESTREAMToIStorage(
  [in]  LPOLESTREAM          lpolestream,
  [out] LPSTORAGE            pstg,
  [in]  const DVTARGETDEVICE *ptd
);

Параметры

[in] lpolestream

Указатель на поток, содержащий постоянное представление объекта в формате хранилища OLE 1.

[out] pstg

Указатель на интерфейс IStorage в объекте структурированного хранилища OLE 2.

[in] ptd

Указатель на структуру DVTARGETDEVICE , которая указывает целевое устройство, для которого выполняется отрисовка объекта OLE 1.

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

Эта функция поддерживает стандартное возвращаемое значение E_INVALIDARG в дополнение к следующему:

Комментарии

Эта функция преобразует объект OLE 1 в объект структурированного хранилища OLE 2. Эта функция используется для обновления объектов OLE 1 до объектов OLE 2, если новая версия объектного приложения поддерживает OLE 2.

При входе параметр lpolestm должен быть создан и расположен так же, как и для вызова функции OleLoadFromStream . При выходе параметр lpolestm размещается так же, как и при выходе из функции OleLoadFromStream , а параметр pstg содержит незафиксируемое постоянное представление объекта хранилища OLE 2.

Для объектов OLE 1, использующих собственные данные для представления, функция OleConvertOLESTREAMToIStorage возвращает CONVERT10_S_NO_PRESENTATION. При получении этого возвращаемого значения вызывающие объекты должны вызвать IOleObject::Update , чтобы получить данные презентации, чтобы их можно было записать в хранилище.

Приложения, которые не используют ресурсы кэширования OLE по умолчанию, но используют ресурсы преобразования, могут использовать альтернативную функцию OleConvertOLESTREAMToIStorageEx, которая может указать данные презентации для преобразования. В функции OleConvertOLESTREAMToIStorageEx данные презентации, считанные из структуры OLESTREAM , передаются, а созданный объект хранения OLE 2 не содержит поток представления.

В следующей процедуре описывается процесс преобразования с помощью OleConvertOLESTREAMToIStorage.

Преобразование объекта OLE 1 в объект хранилища OLE 2

  1. Создайте корневой объект IStorage , вызвав функцию StgCreateDocfile (..., &pstg).
  2. Откройте файл OLE 1 (с помощью OpenFile или другого метода OLE 1).
  3. Чтение из файла с помощью процедуры OLE 1 для чтения файлов, пока не будет найден объект OLE.
  4. Выделите объект IStorage из корневого IStorage , созданного на шаге 1.
    pstg->lpVtbl->CreateStorage(...&pStgChild); 
    hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild); 
    hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);
    
  5. Повторяйте шаг 3, пока файл не будет полностью прочитан.

Требования

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

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

CoIsOle1Class

DVTARGETDEVICE

OleConvertiStorageToOLESTREAM

OleConvertiStorageToOLESTREAMEx

OleConvertOLESTREAMToiStorageEx

STGMEDIUM

TYMED