1. CLSID <==> PROGID 及内存分配与释放
IMalloc *pIMalloc;
HRESULT hr;
LPOLESTR pwszCLSID=NULL;
LPOLESTR pwszProgID=NULL;
hr=CoGetMalloc(1, &pIMalloc);
if(SUCCEEDED(hr))
{
CLSID clsid = {0x209ff,0,0,{0xc0,0,0,0,0,0,0,0x46}};
hr=ProgIDFromCLSID(clsid, &pwszProgID);
MessageBoxW(NULL, pwszProgID, 0, 0);
CLSIDFromProgID(pwszProgID, &clsid);
StringFromCLSID(clsid, &pwszCLSID);
MessageBoxW(NULL, pwszCLSID, 0, 0);
pIMalloc->Free(pwszProgID);
pIMalloc->Release();
}
2. 创建复合文档
void CreateNewDoc(LPOLESTR lpwsFileName)
{
register HRESULT hr;
IStorage *pStgRoot; //根存储
IStorage *pStgSub; //子存储
IStream *pStream; //
TCHAR szText[MAX_PATH];
DWORD dwBytes;
hr=StgCreateDocfile(lpwsFileName,
ST