存储结构体 :
#include "stdafx.h"
#include <objbase.h.>
#define RESULT_OK(hr) if (!SUCCEEDED(hr)) goto Exit0;
#define RELEASE_INTERFACE(X) if (X) { (X)->Release(); (X) = NULL; }
class TempData
{
public:
char data[256];
int count;
} *p;
int _tmain(int argc, _TCHAR* argv[])
{
IStorage* piStr = NULL;
IStorage* piSubStr = NULL;
HRESULT hr = E_FAIL;
IStream* piStream = NULL;
ULONG ulSize = 0;
TCHAR szBuf[] = _T("0123456789");
const TCHAR* pszFilename = _T("c://test.mcb");
TempData data;
char temp[]="1234567890";
data.count =strlen(temp);
strcpy(data.data, temp);
p = &data;
hr = CoInitialize(NULL);
RESULT_OK(hr);
// 创建复合文档
hr = StgCreateDocfile(pszFilename, STGM_DIRECT|STGM_CREATE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, NULL, &piStr);
RESULT_OK(hr);
// 创建数据流
hr = piStr->CreateStream(_T("mcbStream"), STGM_DIRECT|STGM_CREATE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, 0, 0, &piStream);
RESULT_OK(hr);
// 写数据
//hr = piStream->Write(szBuf, _tcslen(szBuf) * sizeof(TCHAR), &ulSize) ;
hr = piStream->Write(p, sizeof(TempData), &ulSize) ;
RESULT_OK(hr);
Exit0:
//RELEASE_INTERFACE(piStream);
RELEASE_INTERFACE(piSubStr);
RELEASE_INTERFACE(piStr);
CoUninitialize();
return 0;
}
读取结构体 :
#include "stdafx.h"
#include <objbase.h.>
#define RESULT_OK(hr) if (!SUCCEEDED(hr)) goto Exit0;
#define RELEASE_INTERFACE(X) if (X) { (X)->Release(); (X) = NULL; }
class TempData
{
public:
char data[256];
int count;
} *p;
int _tmain(int argc, _TCHAR* argv[])
{
IStorage* piStr = NULL;
HRESULT hr = E_FAIL;
IStream* piStream = NULL;
ULONG ulSize = 0;
const TCHAR* pszFilename = _T("c://test.mcb");
hr = CoInitialize(NULL);
RESULT_OK(hr);
// 创建复合文档
hr = StgOpenStorage(pszFilename,NULL, STGM_DIRECT|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, NULL, NULL, &piStr);
RESULT_OK(hr);
hr = piStr->OpenStream(_T("mcbStream"), NULL, STGM_DIRECT|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, NULL, &piStream);
TempData Data;
p= &Data;
hr = piStream->Read(p, sizeof(TempData), &ulSize) ;
MessageBoxA(0,p->data,0,0);
Exit0:
RELEASE_INTERFACE(piStream);
RELEASE_INTERFACE(piStr);
return 0;
}
环境:WINXP(SP3)+IE8
IDE:VS2005