2012-04-30 29 views
4

我使用此代碼加載嵌入資源(位圖圖像​​)保存嵌入的資源文件系統

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

它工作正常。

如何將它保存到文件C:\ image.bmp

此代碼只創建空文件:

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:
創建新類型 「BMP」 的資源和地方形象
HRSRC hResInfo = FindResource(的hInstance,MAKEINTRESOURCE(RESOURCEID ),_T(「BMP」));

+0

您可以使用CImage類或GDI +獲取位圖編碼器。更實際的問題是,如果沒有UAC提升,程序無法將文件寫入C:根文件夾。這對於安裝者來說確實是一種工作。 –

+0

我的程序使用提升的權限運行 – NieAR

回答

3

CreateFile(),WriteFile()CloseHandle()

WriteFile()需要一個指針和一個大小,所以可以直接從鎖定的資源寫入。