Skip to content

Instantly share code, notes, and snippets.

@zamabuvaraeu
Last active January 25, 2026 08:00
Show Gist options
  • Select an option

  • Save zamabuvaraeu/5244e6076d312a0d3693e0b062d2a3f4 to your computer and use it in GitHub Desktop.

Select an option

Save zamabuvaraeu/5244e6076d312a0d3693e0b062d2a3f4 to your computer and use it in GitHub Desktop.
Как хранить и получать данные из ресурсов

Двоичные данные в ресурсах

В ресурсах можно хранить не только строки, значки, меню и диалоги. В ресурсах можно хранить любые данные: картинки, звуки к играм, видео, документы.

Для этого нам пригодится тип ресурса RCDATA в скрипте. Данные в скрипте ресурса могут быть встроенные или внешние.

Встроенные данные

Встроенные данные могут содержать строки и числа. Строки хранятся «как написано», без завершающего нуля и символов перевода строк, если они нужны — не забывайте их добавить.

Скрипт ресурсов со встроенными данными Resource.RC:

#define RESOURCE_ID 100

RESOURCE_ID RCDATA
BEGIN
	"Hello world"
	"Hello world (zero terminated)\0"
	L"A Unicode version of the above\0"
	0x9999  ;hex number stored as a word
	1034	;decimal number stored as a word
	10456L	;decimal number stored as a dword
	1234L,56666L,99999L	;decimal numbers stored as dwords
	33hL,34hL,35hL,36hL		;hex numbers stored as dwords
	0x37L,0x38L,0x39L,0x40L	;C-style hex numbers stored as dwords
END

Внешние данные

Файл ресурсов с внешними данными:

#define RESOURCE_ID

RESOURCE_ID RCDATA "имя файла"

Пример

Получаем данные из ресурсов:

#include once "windows.bi"

var hInst = GetModuleHandle(0)
var res = FindResource( _
	hInst, _
	MAKEINTRESOURCE(RESOURCE_ID), _
	RT_RCDATA _
)

var pData = LoadResource(hInst, res)
var length = SizeofResource(hInst, res)

Теперь в переменной pData хранятся байты ресурса, в переменной length — размер.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment