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
指向 OLE 2 结构化存储对象上的 IStorage 接口的指针。
[in] ptd
指向 DVTARGETDEVICE 结构的指针,该结构指定呈现 OLE 1 对象的目标设备。
返回值
此函数支持标准返回值 E_INVALIDARG,此外还支持以下内容:
注解
此函数将 OLE 1 对象转换为 OLE 2 结构化存储对象。 当对象应用程序的新版本支持 OLE 2 时,使用此函数将 OLE 1 对象更新为 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 存储对象
- 通过调用 StgCreateDocfile 函数 (...创建根 IStorage 对象,&pstg) 。
- 使用 OpenFile 或其他 OLE 1 技术) 打开 OLE 1 文件 (。
- 使用 OLE 1 过程读取文件,直到找到 OLE 对象。
- 从步骤 1 中创建的根 IStorage 中分配 IStorage对象。
pstg->lpVtbl->CreateStorage(...&pStgChild); hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild); hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);
- 重复步骤 3,直到文件完全读取。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ole2.h |
Library | Ole32.lib |
DLL | Ole32.dll |
另请参阅
OleConvertIStorageToOLESTREAMEx