NieAR
NieAR

Reputation: 1445

Save embedded resource to the file system

I use this code to load embedded resource (bitmap image)

HRSRC hResInfo = ::FindResource(hInstance, MAKEINTRESOURCE(resourceId), RT_BITMAP);
HGLOBAL hRes = ::LoadResource(hInstance, hResInfo);
LPVOID memRes = ::LockResource(hRes);
DWORD sizeRes = ::SizeofResource(hInstance, hResInfo);

It works fine.

How I can to save it to the file C:\image.bmp?

This code creates only empty file:

HANDLE hFile = ::CreateFile(L"C:\\image.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwWritten = 0;
::WriteFile(hFile, memRes, sizeRes, &dwWritten, NULL);
::CloseHandle(hFile);



SOLUTION:
Create new type "BMP" in resources and place image
HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(resourceId), _T("BMP"));

Upvotes: 6

Views: 4088

Answers (1)

Deanna
Deanna

Reputation: 24283

CreateFile(), WriteFile(), and CloseHandle().

WriteFile() takes a pointer and a size so can write from the locked resource directly.

Upvotes: 3

Related Questions