Bonjour
j'ai un programme avec des images jpg stockées en ressource
CopyImage me retourne NULL
GetLastError me retourne la valeur 8
d'après la msdn, ça correspondrait à un manque de mémoire
or dans le gestionnaire des tâches, j'ai encore de la marge (où alors je ne regarde pas dans la bonne zone)
d'où peut venir l'erreur ?
comment corriger ?
comment savoir si on a assez de mémoire (si c'est bien ça le problème)
Merci
voici le code utilisé (il vient d'un des codes présents sur ce site)
===============================
HBITMAP __stdcall PictureToBitmap(LPBYTE pmem, DWORD nSize)
{
HRESULT hr;
CoInitialize(0);
HBITMAP hbmp_dst = 0;
HGLOBAL hgbl =(HGLOBAL)GlobalAlloc(GMEM_FIXED, nSize);
memcpy(hgbl, pmem, nSize);
IStream* stream = 0;
hr = CreateStreamOnHGlobal(hgbl, TRUE, &stream);
if(!SUCCEEDED(hr) || !stream) goto errPicture;
IPicture* picture = 0;
hr = OleLoadPicture(stream, nSize, 0, IID_IPicture, (void**)&picture);
if(!SUCCEEDED(hr) || !picture) goto errPicture;
HBITMAP hbmp_src;
picture->get_Handle((OLE_HANDLE *)&hbmp_src);
if(!SUCCEEDED(hr) || !picture) goto errHandle;
BITMAP bmp;
GetObject(hbmp_src, sizeof bmp, &bmp);
hbmp_dst = (HBITMAP)CopyImage(hbmp_src, IMAGE_BITMAP, 0, 0, 0);
errHandle:
picture->Release();
errPicture:
stream->Release();
errStream:
GlobalFree(hgbl);
CoUninitialize();
return hbmp_dst;
}
===============================