Я пытаюсь встроить файл .bmp в мое приложение (простое консольное приложение), извлечь содержимое этого файла и затем записать его в другой файл .bmp на диске, чтобы посмотреть, смогу ли я успешно прочитать мой ресурс.
Проект создан с помощью Visual Studio 2017:
main.cpp:
#include "stdafx.h"
#include "resource.h"
#include <Windows.h>
#include <string>
#include <iostream>
int main()
{
HRSRC hresinfo = FindResource(NULL, MAKEINTRESOURCE(IDB_BITMAP1), _T("BITMAP"));
HGLOBAL hRes = LoadResource(NULL, hresinfo);
LPVOID data = LockResource(hRes);
DWORD datasize = SizeofResource(NULL, hresinfo);
std::cout << datasize;
ofstream output("test.bmp", std::ios::binary);
output << data;
output.close();
return 0;
}
resource.h:
//{{NO_DEPENDENCIES}}
// Include file Microsoft Visual C++.
// Used by Resource.rc
//
#define IDB_BITMAP1 101
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Resource.rc (интересная часть):
IDB_BITMAP1 BITMAP "bitmap1.bmp"
Всего Resource.rc
: https://pastebin.com/tnRyg64b
Однако cout
возвращает 0, а test.bmp
- неверный файл. Думаю, проблема в том, что я что-то упустил при получении содержимого моего ресурса, но где?
EDIT:
Использование output.write(data,datasize)
вместо output <<
дает мне 0 Ko test.bmp (вместо 1Ko)