c++ - 将嵌入资源保存到文件系统

标签 c++ winapi

我使用这段代码来加载嵌入式资源(位图图像​​)

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);



解决方案:
在资源中创建新类型“BMP”并放置图像
HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(resourceId), _T("BMP"));

最佳答案

CreateFile()WriteFile()CloseHandle()

WriteFile() 接受一个指针和一个大小,因此可以直接从锁定的资源写入。

关于c++ - 将嵌入资源保存到文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384610/

相关文章:

c++ - DirectX 11 效果

c++ - 尝试取消引用2D vector 中的元素时发生错误

C++ Winapi - MPEG 电影作为动画背景

c++ - OpenGL:缩放自适应网格线

c++ - 编译器 g++ 无法创建 a.out 文件?

c++ - SDL_GL_SetAttribute 不设置颜色大小

c++ - Windows API编程为什么需要RegisterClass?

c++ - 是否有 WinAPI 函数 'ExistFile' ?

winapi - 多次调用 CryptHashData

c++ - 将驱动器盘符转换为 CD 刻录机的完整路径