Привет !
Откопал случайно в заголовочном файле функцию. В MSDN у меня недокументировано ничего — апрельский этого года. А заголовочный файл от 4.24.98 !!!
Эта функция может, по идее, сохранять все то, что загружает OleLoadPicture — BMP, GIF, JPEG, ICO, WMF, и EMF
WINOLECTLAPI OleSavePictureFile(LPDISPATCH lpdispPicture,
BSTR bstrFileName);
итак :
BOOL SaveBitmap(HBITMAP hBitmap,HPALETTE hPal,LPCTSTR szPath)
{
PICTDESC pDesc;
pDesc.cbSizeofstruct = sizeof(PICTDESC);
pDesc.bmp.hbitmap = hBitmap;
pDesc.bmp.hpal = hPal;
pDesc.picType = PICTYPE_BITMAP;
return SavePictureIndirect(pDesc,szPath);
}
BOOL SavePictureIndirect(PICTDESC pDesc,LPCTSTR szPath)
{
IPicture* pPicture = NULL;
BOOL bResult = TRUE;
OleCreatePictureIndirect(&pDesc,&IID_IPicture,FALSE,(void**)&pPicture);
if(pPicture == NULL)
bResult = FALSE;
else
bResult = SavePicture(pPicture,szPath);
if(pPicture != NULL)
pPicture->lpVtbl->Release(pPicture);
return bResult;
}
BOOL SavePicture(IPicture* pPicture,LPCTSTR szPath)
{
HRESULT hr;
int size = strlen(szPath);
BSTR bstrPath = SysAllocStringByteLen(szPath,size*2);
MultiByteToWideChar(CP_ACP,0,szPath,size, bstrPath, size*2);
hr = OleSavePictureFile((LPDISPATCH)pPicture,bstrPath);
SysFreeString(bstrPath);
return SUCCEEDED(hr);
}