Ответ 1
В диалоговом окне "Добавить ресурс" нажмите "Импорт", выберите "Все файлы (.)", чтобы он мог импортировать файл любого типа, а затем просто выберите нужный файл. Когда появится диалоговое окно "Тип настраиваемого типа ресурса", введите RCDATA в поле "Тип ресурса".
Если вы откроете файл .rc, вы увидите что-то вроде этого:
/////////////////////////////////////////////////////////////////////////////
//
// RCDATA
//
IDR_RCDATA1 RCDATA "myfile.whatever"
и он будет генерировать resource.h со следующей строкой:
#define IDR_RCDATA1 101
В коде вы получите доступ к нему следующим образом:
#include "resource.h"
#include <windows.h>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
return 0;
}
где pMyBinaryData является указателем на первый байт этого исполняемого файла. Для получения дополнительной информации посетите Функции ресурсов
Вот пример, как вы сохранили бы двоичный ресурс, как это на диске:
#include "resource.h"
#include <windows.h>
#include <fstream>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
unsigned int myResourceSize = ::SizeofResource(NULL, myResource);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
std::ofstream f("C:\\x.bin", std::ios::out | std::ios::binary);
f.write((char*)pMyBinaryData, myResourceSize);
f.close();
return 0;
}
Когда вы создаете проект с таким ресурсом, этот ресурс станет частью вашей программы (dll).