今天的工程要用到复合文档,查了一下MSDN,没有介绍如何使用。上网查了一下,相关的资料少之又少,而且还不完整,于是想起我的电脑中存有一份DELPHI的文档,里面有介绍过如何在DELPHI下读写复合文档。虽然是DELPHI写的,但都是用SDK,转为C++应该不难。(复合文档也叫做结构化文件)
读写复合文档主要用到其中的几个函数就可以了
- 先用 StgCreateDocfile 函数创建一个复合文档
HRESULT StgCreateDocfile(
const WCHAR *pwcsName, // 指向复合文档路径的指针
DWORD grfMode, // 指定访问模式
DWORD reserved, // 保留参数,必须为0
IStorage **ppstgOpen // 返回一个新的IStorage指针
); - 然后调用 IStorage::CreateStorage 创建一个子IStorage
HRESULT CreateStorage(
const WCHAR *pwcsName, // 子IStorage的名称
DWORD grfMode, // 指定访问模式
DWORD reserved1, // 保留参数,必须为0
DWORD reserved2, // 保留参数,必须为0
IStorage **ppstg // 当函数执行成功后,返回一个新的IStorage指针,如果执行失败则返回NULL
); - 再调用 IStorage::CreateStream 创建一个子IStream