Как скомпилировать файл ресурсов

Обновлено: 03.07.2024

Не буду рассказывать про то, что такое файл ресурсов, для чего нужен, и как его подключить к проекту (кто не в курсе этих вопросов – дальше можно читать только для общего образования), а сразу опишу проблему. Предположим, у нас есть файл, скажем, resources.rc, в котором содержится все необходимое проекту добро и успешно используется под Windows с помощью нехитрого набора функций LoadResource, FindResource и т.п. Задача: собрать этот же проект под Linux, в процессе подключить ресурсы к исполняемому файлу и, естественно, прочитать их в своей программе.

При сборке проекта в Windows файл определения ресурсов (.rc) компилируется в двоичный вид (.res) и на этапе компоновки подключается к exe-файлу, фактически прописываясь после запуска где-то в оперативной памяти. Напомню, что определить местоположение искомого ресурса позволяет функция:

Технология отлажена, сомнению не подвергается. Уже на этом этапе в Linux возникает несколько вопросов. Во-первых, чем откомпилировать исходный файл ресурсов в двоичный формат? Во-вторых, как подключить его к формируемому исполняемому файлу проекта? И, в-третьих, как найти и прочитать в файле нужный ресурс?

Шаг 1. Компилируем файл ресурсов

Самый простой шаг. С данной задачей вполне справляется утилита wrc (Wine Resource Compiler), которая умеет компилировать файл ресурсов в 16- или 32-разрядный двоичный формат. Применение простое:

Шаг 2. Подключение файла ресурсов

У нас уже имеется скомпилированный файл ресурсов, представленный в двоичном виде, однако, как это ни странно, пока что он представляет собой всего лишь набор символов. В таком виде его даже можно будет включить в сборку, но найти его в памяти во время работы программы будет проблематично, и наши ресурсы так и останутся болтаться внутри бинарника космическим мусором. На помощь приходит утилита objcopy, которая умеет преобразовывать объектные (и исполняемые) файлы в разные "правильные" форматы, которые потом уже можно будет прилинковать. С ее помощью преобразуем наш двоичный файл ресурсов (resources.res) в объектный (resources.o). Включаем магию:

Говорим, что на входе у нас двоичный файл (-I binary), на выходе хотим получить файл в формате объектных файлов на 32-разрядной платформе x86 (-O elf32-i386), причем он должен выглядеть как "исполняемый" файл (-B i386). В таком виде его уже можно будет подключать к проекту:

Я использую cmake, поэтому в мой CMakeLists.txt добавил несколько строчек:

На этом почти вся магия кончается. Остается невыясненным только один вопрос: как найти ресурсы в готовом executable файле? Компоновщик, выполнив свою работу, великодушно оставил в собранном файле несколько меток:

По этим меткам теперь можно прочитать содержимое файла ресурсов.

Шаг 3. Поиск и чтение ресурсов в программе

Для начала определим переменные, соответствующие вышеописанным меткам компоновщика:

При определении использую тип char, поскольку в моем проекте в ресурсах хранятся только ссылки на текстовые файлы в формате xml. Дополнительно определю привычные типы, не известные Linux, исключительно для удобства работы

Для применения FindResource не хватает только hModule. Под Windows в эту переменную будет записан хендл текущего модуля, в Linux – адрес начала блока ресурсов в нашем файле

Все готово для поиска нужного ресурса, кроме того, что в Linux отсутствует соответствующая функция, которую придется изготовить самостоятельно. Поскольку все ресурсы, которые были подключены к нашему проекту, сохранены в формате файла res, неплохо было бы для начала узнать его формат. Читаем в MSDN, что в основе формата лежит структура RESOURCEHEADER

Под Linux я также переопределил типы

и добавил константу, обозначающую тип ресурса: в моем случае это простые данные

Итак, в файле ресурсов после структуры RESOURCEHEADER следуют данные, размер которых составляет DataSize байт. Этой информации почти достаточно для того, чтобы распотрошить его полностью. Последняя засада, которая поджидает на пути к цели: каждый ресурс, включающий структуру и сами данные, выровнен по двойному слову. То есть, в случае если его размер в байтах не кратен четырем, в хвост к нему дописывается недостающее количество нулевых символов. У меня получилась такая функция для поиска ресурса типа RC_DATA по заданному имени

Теперь функция FindResource вернет нам адрес начала искомого ресурса, который будем использовать далее

И более ничто не мешает прочитать содержимое памяти в свою переменную

Resource::

Безусловно, рассмотренный пример использования в Linux привычных для Windows файлов определения ресурсов довольно примитивен, поскольку "заточен" только под один тип данных (RT_RCDATA). Однако вполне представляет собой основу детской пирамидки с уже одетым на нее небольшим колечком, поверх которого можно набросать еще много всего.

При создании локализованных версий проекта все элементы пользовательского интерфейса должны разделяться по файлам ресурсов для разных языков. Если в проекте используются только строки, в качестве файлов ресурсов могут выступать текстовые файлы. Кроме того, в этих целях можно использовать RESX-файлы.

Компиляция ресурсов с помощью MSBuild

Библиотека общих задач, предоставляемая вместе с MSBuild, включает в себя задачу GenerateResource , позволяющую компилировать ресурсы в RESX-файлах или текстовых файлах. Эта задача включает параметр Sources для указания компилируемых файлов ресурсов и параметр OutputResources для указания имен выходных файлов ресурсов. Дополнительные сведения о задаче GenerateResource см. в разделе Задача GenerateResource.

Компиляция ресурсов с помощью MSBuild

Определите файлы ресурсов проекта и передайте их в задачу GenerateResource в виде списков элементов или имен файлов.

Укажите параметр OutputResources задачи GenerateResource , позволяющий задать имена выходных файлов ресурсов.

Используйте элемент Output задачи, чтобы сохранить значение параметра OutputResources в элементе.

Используйте элемент, созданный из элемента Output , в качестве входных данных для другой задачи.

Пример 1

В следующем примере кода показано, как элемент Output указывает, что атрибут OutputResources задачи GenerateResource будет содержать скомпилированные файлы ресурсов alpha.resources и beta.resources, и что эти два файла будут помещены в список элементов Resources . Определив эти файлы RESOURCES как коллекцию элементов с таким же именем, вы можете легко использовать их в качестве входных данных для другой задачи, например Csc.

Эта задача аналогична использованию параметра /compile для программы Resgen.exe:

Resgen.exe /compile alpha.resx,alpha.resources /compile beta.txt,beta.resources

Пример 2

Приведенный ниже пример проекта содержит две задачи: задача GenerateResource для компиляции ресурсов и задача Csc для компиляции как файлов исходного кода, так и скомпилированных файлов ресурсов. Файлы ресурсов, скомпилированные задачей GenerateResource , хранятся в элементе Resources и передаются задаче Csc .

Приветствую всех форумчани поздравляю с наступившим Новым Годом.

Имеется файл *.rc вида

Требуется создать из него файл ресурсов (*.res) через (важно!) командную строку, а затем скомпилировать вместе с *.cpp файлом в exe, также через командную строку.

Прошу посоветовать утилиту для преобразования .rc в .res (пробовал использовать brcc32.exe от Delphi, успешно генерирует *.res файл, но он отличен от файла ресурсов сгенерированного VisualStudio, можно ли его использовать?).

А также каким образом и на чем можно/лучше скомпилировать .cpp файлик с подключенным ресурсом. Т.е. каким должен быть вид команды.
Пробовал компилировать .cpp на Borland c++ командой bcc, ничего не вышло. То ли не подходит файл ресурсов созданный через brcc32.exe, то ли неверно подключаю сам *.res в .cpp файле

Повторюсь, компилировать все необходимо через командную строку, поэтому прошу подсказать подходящие для этого утилиты (желательно бесплатные и свободно распространяющиеся) и форматы команд.

Добавлено через 4 часа 17 минут
Изменю вопрос.
Каким образом можно добавить файл ресурса в exe?

Например при выполнении команды в cmd

ругается на формат res.rc.

Пробовал создать объектный файл Dev-C++, командой

и затем линкером, TLINK32, добавить в объектный файл уже готовый файл ресурсов res.res.
Но линкер ругается на то, что полученный файл, main.o, не подходит по формату, как быть?

Добавлено через 37 минут
С вопросом разобрался, для тех кто также ищет способ скомпилировать exe файл с ресурсами без использования компиляторов опишу процесс действий.

Утилитой brcc32.exe можно создать из *.rc файла, файл ресурсов (*.res).
Полученный файл можно скомпилировать в объектный с помощью замечательной утилиты windres.exe, входящей в состав Dev-C++.
Далее компилируем *.cpp файл с параметром -c в объектный модуль и связываем два объектных файла (файл ресурсов и файл программы) вместе.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Создание файла ресурсов
Хотел бы спросить:файл ресурсов можно создать в Visual Studio Express Edition или нужно.

Файлы ресурсов .res и элемент DrawGrid
Имеется файл ресурсов (r.res), в котором есть битовые матрицы. Есть также компонент DrawGrid (пусть.


Как использовать файл ресурсов .res (который можно указать в свойствах проекта)
Здравствуйте. Подскажите пожалуйста как использовать файл ресурсов (этот файл еще задается в.

Создание файла ресурсов вручную
Файл ресурсов мне нужен только для того, чтобы в программу запаковать иконку. В обозревателе.


Создание вкладки TabControl-а с файла ресурсов
Здравствуйте, есть файл ресурсов: // Generated by ResEdit 1.6.6 // Copyright (C) 2006-2015 //.

.res - расширение файла
Доброго времени суток, есть программка, как я думаю написанная на Делфи, а скорее это тест (учебный.

Хранение ресурсов (WAV, MP3, . ) внутри EXE

Игры и другие типы приложений, которые используют мультимедиа (типа звуков, анимации) должны включать дополнительные файлы мультимедиа вместе с приложением или включать файлы внутрь исполнимого файла.

Вы можете добавлять данные в Ваше приложение как ресурс, а затем извлекать эти данные, когда это необходимо. Эта методика более желательна, так как это может предохранить другие файлы от изменения их и предохранения.

В этой статье будет рассмотрено, как включать звуковые файлы, видео, анимацию и другие двоичные файлы в исполнимый файл Delphi.

Файлы ресурсов (.RES)

Включение нескольких двоичных файлов в исполнимый состоит из 5 шагов:

  • Составьте и/или соберите все файлы, которые необходимо включить в EXE
  • Создайте файл сценария ресурсов .RC, который описывает все ресурсы, исользуемые Вашим приложением
  • Скомпилируйте файл сценария ресурсов .RC, чтобы создать файл ресурсов .RES
  • Свяжите скомпилированный файл ресурсов с исполнимым файлом
  • Используйте индивидуальные элементы ресурсов

Первый шаг очень прост: просто решите какие файлы Вы хотите хранить в исполнимом. Например, мы будем хранить две .WAV песни, одну .AVI видео и одну .MP3 песню.

Прежде, чем продолжить, есть несколько важных заявлений относительно ограничений при работе с ресурсами:

а) Загрузка и выгрузка ресурсов на время выполнения операции. Ресурсы - часть исполнимого файла приложения и загружается во время выполнения приложения.

б) Вся свободная память может использоваться при загрузке/выгрузке ресурсов. Другими словами, нет никаких пределов в количестве ресурсов, загруженных одновременно.

в) Конечно, файл ресурсов увеличивает размер исполнимого. Если Вы хотите уменьшить размер исполнимого файла, рассмотрите размещение ресурсов и части Вашего проекта в DLL и пакетах.

Теперь давайте посмотрим, как создать файл, который описывает ресурсы.

Создание файла сценария ресурсов (.RC)

Файл сценария ресурсов - это простой текстовый файл с расширением .RC, который перечисляет ресурсы. Файл сценария имеет следующий формат:

ResName определяет или уникальное имя или целое число (ID), который обозначает ресурс.

ResType описывает тип ресурса

ResFileName - полный путь и имя файла, который будет включен в ресурс.

Для создания нового файла сценания ресурсов проделайте следующее:

  • Создайте новый текстовый файл в каталоге проектов
  • Переименуйте его в MyRes.rc

В MyRes.rc записано следующее:

Файл сценария просто определяет ресурсы. В данном формате MyRes.rc перечисляет два WAV файла, один AVI и одну песню в MP3 формате. Все инструкции в .RC файле связывают имя ресурса, тип и имя файла для данного ресурса. Есть около дюжины предопределенных типов ресурсов. Они включают иконки, точечные рисунки, курсоры, анимацию и т.д. RCDATA определяет пользовательский тип данных. RCDATA позволяет включать любой ресурс данных для приложения. Пользовательские ресурсы данных разрешают включение двоичных данных непосредственно в исполняемом файле. Например, заявление RCDATA выше называет двоичный ресурс приложения Intro и определяет файл, который содержит песню в MP3 формате.

Примечание: удостоверьтесь, что у Вас имеются все ресурсы, перечисленные в Вашем файле .RC. Если файлы внутри каталога проектов, то Вы не должны включать полный путь к файлам.

Создание файла ресурсов (.RES)

Чтобы использовать ресурсы, определенные в файле сценария ресурсов, мы должны скомпилировать его в .RES файл при помощи Borland Resource Compiler. Компилятор ресурсов создает новый файл, основанный на содержании файла сценария ресурсов. Этот файл имеет обычно расширение .RES. Компоновщик Delphi позже будет повторно форматировать .RES файл в файл объекта ресурсов, а затем связывать его с исполнимым файлом приложения.

Bopland Resource Compiler находится в каталоге Delphi/Bin. Имя - BRCC32.exe. Просто введите в командной строке brcc32.exe и нажмите Enter. Компилятор запустится и отобразит справку использования (без параметров в командной строке).

Подготовьте файл MyRes.rc и выполните команду (в каталоге проектов):

По умолчанию, при компилировании ресурсов, BRCC32.exe называет скомпилированный файл с расширением .RES с именем .RC файла и помещает его в тот же каталог, что и .RC.

Подключение файла ресурсов к исполнимому файлу

Мы создали файл ресурсов. В следующем шаге мы должны добавить следующую директиву компилятора в модуле нашего проекта сразу после директивы формы (ниже ключевого слова implementation).

Случайно не удалите , так как эта строка кода сообщает Delphi о подключении визуальной части формы. Когда Вы выбираете точечные рисунки для компонентов SpeedButton, Image или Button, Delphi включает растровый файл, который Вы выбрали как часть ресурса формы.

После того, как .RES файл будет связан с исполняемым файлом, приложение может загружать его ресурсы во время выполнения, когда это будет необходимо. Чтобы фактически использовать ресурс, Вы должны будете сделать несколько вызовов API.

Нам нужен будет новый проект с пустой формой. Добавьте директиву в модуль главной формы. Как уже было сказано выше, мы будем иметь дело с функциями Windows API.

Например, метод LoadFromResourceName объекта TBitmap. Этот метод извлекает указанный растровый ресурс и назначает его объекту TBitmap. Это аналогично вызову функции LoadBitmap в Windows API. Как всегда, Delphi улучшил вызов функции API, чтобы удовлетворить наши потребности лучше.

Проигрывание анимации из ресурсов

Чтобы показать анимацию cool.avi (который был определен в нашем файле ресурсов), мы будем использовать компонент TAnimate из палитры компонентов Win32, который нужно поместить на главную форму. Оставьте его имя по умолчанию - Animate1. Мы будем использовать событие OnCreate формы, чтобы отобразить анимацию:

Все просто! Как мы можем видеть, чтобы запустить анимацию из ресурсов, мы должны использовать свойства ResHandle, ResName или ResID компонента TAnimate. После установки ResHandle, мы устанавливаем свойство ResName, чтобы определить какой ресурс является видеоклипом AVI, который должен будет отображен управлением TAnimate. Установка свойства Active в True просто запускает анимацию.

Проигрывание WAV

Так как мы включили два файла WAV в наше приложение, теперь посмотрим как извлечь звук из файла и запустить его. Поместите кнопку Button1 на форму и напишите следующий код в обработчик события OnClick:

Этот подход использует несколько вызовов API для загрузки ресурса типа WAV по имени MailBeep и запустить его. Обратите внимание: Вы можете использовать Delphi, чтобы запустить предопределенные системой звуки.

Проигрывание MP3

Единственный файл MP3 имеет имя Intro. Так как ресурс имеет тип RCDATA, мы будем использовать другую методику, чтобы извлеч и запустить MP3 песню. TMediaPlayer может запустить MP3 файл.

Теперь добавьте компонент TMediaPlayer на форму (MediaPlayer1) и добавьте TButton (Button2). Событие OnClick должно быть таким:

Этот код при помощи TResourceStream извлекает MP3 из exe и сохраняет его в рабочем каталоге приложения. Имя файла MP3 - Intro.mp3. Затем просто назначьте его свойству FileName компонента TMediaPlayer и воспроизведите песню.

Но, присутствует одна небольшая проблема - приложение создает файл MP3 на машине пользователя. Вы можете добавить код, чтобы удалить этот файл перед закрытием прилоожения.

Рано или поздно любой человек, программирующий под Windows (имеется в виду платформа Win32), сталкивается с необходимостью работы с ресурсами. Когда настанет этот момент - в первую очередь, зависит от среды разработки и библиотек, которыми программист пользуется. Некоторые ориентированы на работу непосредственно с ресурсами с самого начала, другие же позволяют в большинстве случаев обойтись и без них. Однако когда возникает необходимость отредактировать какой-то ресурс, как раз последние среды разработки не могут похвастаться удобными редакторами. В этой статье, как вы, наверное, уже догадались, мы поговорим о ресурсах. И о том, как с ними можно работать с максимальным комфортом.


Что такое ресурсы

Если вы уже достаточно программировали под Win32, то не можете не знать, что такое ресурсы. Однако у начинающих программистов этот термин нередко вызывает вопросы, поэтому, думаю, будет нелишним напомнить (или объяснить), что мы имеем в виду, когда говорим "ресурс".

Ресурсы - это данные, помещённые в специально отведённую для них область исполняемого файла. Как известно, исполняемые файлы могут содержать не только программный код, но и данные. В ОС такие файлы Windows разбиты на секции. Если данные находятся в секции, отведённой для ресурсов, значит, это ресурсы. Чем ресурсы отличаются от любых остальных данных внутри EXE-файла? Собственно, только тем, что система предоставляет программисту специальные функции для работы с ними.

Традиционно выделяют разные типы ресурсов. К стандартным относятся значки (иконки), курсоры для мыши, bitmap-картинки, строки и таблицы строк, комбинации "горячих" клавиш (accelerators), меню, диалоговые окна и информация о версии приложения. Существует также специальный тип ресурсов под названием RCDATA, позволяющий добавить в программу любые данные, не подходящие под приведенную выше классификацию, и работать с ними тоже как с обычными ресурсами.


Для чего они нужны

"Классическое" программирование под Win32, давно ставшее анахронизмом, предусматривает такой подход к созданию приложений, при котором ресурсы используются более чем интенсивно. Однако в большинстве сред разработки, с которыми поставляются фирменные библиотеки для создания пользовательского интерфейса, ресурсы задействованы не совсем так, как предлагали создатели операционной системы. Например, в Borland Delphi и C++ Builder все формы (окна) и всё, что на них, включая меню и таблицы "горячих" клавиш, находятся в секции RCDATA в виде специального текстового описания формы.

Собственно, в связи с этим может возникнуть один довольно здравый вопрос: а в чём вообще смысл использования ресурсов? Ведь можно прекрасно создать меню и диалоговые окна прямо по ходу работы приложения, с помощью стандартных функций Win32 API. Зачем же усложнять всё, создавая сначала ресурсы, а уже после вызывая их из приложения? Ответ довольно прост. Вынесение всех описанных выше видов ресурсов в отдельную часть исполняемого файла облегчает задачу по их изменению в уже скомпилированной программе. Согласитесь, изменить содержимое ресурса с помощью специального редактора намного легче, чем её дизассемблировать и менять ассемблерный код. Однако тут же возникает ещё один вопрос, тоже вполне логичный. Зачем может понадобиться изменение ресурсов? Самый простой пример - локализация программы. Для перевода интерфейса программы на другой язык достаточно воспользоваться редактором ресурсов, причём сделать это может даже человек, достаточно далёкий от программирования. А пользователи любят локализованные программы.


Инструментарий

Для работы с ресурсами, естественно, нужен специальный инструментарий. Его можно разделить на несколько видов: WYSIWYG 1 -редакторы ресурсов, компиляторы ресурсов и редакторы ресурсов, которые работают с исполняемыми файлами.

До того, как ресурс попадёт в исполняемый файл, он может пребывать в двух состояниях: в виде скрипта или в виде скомпилированного файла ресурсов. Файлы со скриптами - текстовые файлы с расширением RC, имеющие внутри себя текст на языке Resource Script. Компиляторы ресурсов преобразуют скрипты в двоичный формат, с которым умеют работать компоновщики исполняемых файлов. Компилятор ресурсов есть практически в каждом пакете для программирования. Например, в GNU Compiler Collection для Windows этот компилятор называется Windres.exe.

С WYSIWYG-редакторами работать, конечно же, на порядок проще, чем писать скрипты в блокноте. Картинки в них рисовать, естественно, не так удобно, как в Adobe Photoshop, но в плане редактирования меню, диалогов, да и иконок с курсорами всё не так уж и плохо. В них ресурсы можно редактировать, как правило, и в виде скриптов, и в скомпилированном двоичном виде. Таких программ, к счастью тоже немало. Наиболее хорошо знаком программистам, пожалуй, редактор ресурсов из Microsoft Visual Studio. Есть также Borland Resource Workshop, которому сто лет в обед, а в последних версиях сред разработки от Borland его уже не видно и не слышно.

Программы, которые умеют работать с ресурсами в исполняемых файлах, как правило, тоже имеют некоторые зачатки WYSIWYG. Дальше всех в этом направлении продвинулся Resource Hacker, но и остальные тоже не так уж плохи.


Resource Builder от SiComponents

А сейчас я хотел бы рассказать о программе, которая в приведенной классификации попадает сразу во все три категории и имеет как WYSIWYG-дизайнер, так и компилятор ресурсов. Умеет при этом работать и со скриптами, и с двоичными файлами ресурсов, и с исполняемыми файлами. Название программы, как вы уже догадались, - ResourceBuilder, а найти в интернете её можно по адресу www.resource-builder.com или www.sicomponents.com. Программа, правда, платная, но это, пожалуй, тот самый случай, когда продукт действительно заслуживает сотни "вечнозелёных", которую за него просят разработчики.

После скачивания пробной версии и её установки вы сможете запустить программу и увидеть примерно то же самое, что содержит скриншот к статье. В целом, по моему скромному мнению, интерфейс достаточно удобный и симпатичный.


Разработчики Resource Builder'а утверждают, что это единственный WYSIWYG-редактор ресурсов, поддерживающий Unicode-ресурсы, в том числе и RC-скрипты в этой кодировке. Кроме того, программа поддерживает и 16-битные, и 32-битные скомпилированные файлы ресурсов, аналогично и исполняемые файлы. Также присутствует поддержка изменения ресурсов без перекомпиляции исполняемого файла, которая, по существу, является стандартной и реализована во многих программах, однако это ничуть не умаляет полезности данной функции. Что интересно, Resource Builder умеет работать и с ресурсами компонентов Delphi/C++ Builder.

Графический редактор, встроенный в Resource Builder, по своим возможностям просто-таки близнец Paint'а. В то же время, в отличие от многих других редакторов, он поддерживает редактирование изображений любого размера и с любой глубиной цвета. В справке написано, что программа умеет работать не только со стандартными BMP-картинками, но и с изображениями в формате JPEG. Однако с такими ресурсами нельзя будет работать теми же системными средствами, что и с BMP, поэтому лично мне эта возможность не кажется такой уж полезной.

Зато интересная особенность Resource Builder'а - поддержка работы с формами Delphi и C++ Builder. С ними можно работать в текстовом виде, причём редактор имеет подсветку синтаксиса для них. А если у вас на компьютере установлены Delphi 6 или 7, или же C++ Builder 6, то можно воспользоваться их средствами для визуального редактирования форм. Если при этом указать все дополнительные компонентные библиотеки (BPL), то работа с формами будет совсем комфортной.

С редактированием стандартных диалоговых ресурсов тоже никаких проблем нет. Resource Builder поддерживает как стандартные элементы, предоставляемые Windows, так и позволяет осуществить подключение сторонних библиотек с элементами управления. Причём одна такая библиотека поставляется вместе с самим Resource Builder'ом. Она, правда, небольшая и содержит всего две кнопки, но зато снабжена исходными текстами, так что каждый желающий сможет создать на её основе свою библиотеку элементов управления.

Вместе с Resource Builder поставляется и консольный компилятор ресурсных скриптов, поэтому те, кто хочет компилировать ресурсы из командной строки, также будут иметь возможность это сделать. Языковые возможности компилятора полностью совпадают с возможностями визуального редактора ресурсов, так что все ресурсные скрипты, созданные с помощью Resource Builder'а, полностью с ним совместимы.

Ресурсы в программе можно поместить в специальную ресурсную DLL-библиотеку, причём для того, чтобы сделать это, не требуется никаких сторонних инструментов. Одним движением руки в программу или в ресурсный файл можно добавить XP Manifest (специальный ресурс, обеспечивающий поддержку визуальных стилей Windows XP). Для удобства пользователя в Resource Builder'е имеется поддержка многоязычного интерфейса, причём русский язык включён в дистрибутив пробной версии программы. Также стоит отметить присутствие "Мастера настроек", который можно в любой момент вызвать из меню "Инструменты". С его помощью можно быстро настроить самое важное, не вникая в детали всех настроек, которых в Resource Builder'е не так уж и мало.

Таким образом, в качестве подведения итогов хочу сказать, что Resource Builder - самый качественный из встреченных мною инструментов для работы с ресурсами. В этом он может дать фору даже такому монстру, как Visual Studio. А уж о таких программах, как Borland Resource Workshop или Borland Image Editor, и говорить нечего. Поэтому рекомендую его всем, кто страдает от недостатков того редактора ресурсов, которым пользуется.

Вадим СТАНКЕВИЧ


1 WYSIWYG - What You See Is What You Get, т.е. в редакторе всё выглядит так же, как будет выглядеть при работе программы

Читайте также: