Функция 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
- Создайте корневой объект IStorage , вызвав функцию StgCreateDocfile (..., &pstg).
- Откройте файл OLE 1 (с помощью OpenFile или другого метода OLE 1).
- Чтение из файла с помощью процедуры OLE 1 для чтения файлов, пока не будет найден объект OLE.
- Выделите объект IStorage из корневого IStorage , созданного на шаге 1.
pstg->lpVtbl->CreateStorage(...&pStgChild); hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild); hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);
- Повторяйте шаг 3, пока файл не будет полностью прочитан.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ole2.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |
См. также раздел
OleConvertiStorageToOLESTREAMEx