Файл ресурса rc: Приложение для создания файла ресурсов (RC, RES) — Сторонние компоненты
Хранение ресурсов (WAV, MP3, …) внутри EXE
Игры и другие типы приложений, которые используют мультимедиа (типа звуков, анимации) должны включать дополнительные файлы мультимедиа вместе с приложением или включать файлы внутрь исполнимого файла.
Вы можете добавлять данные в Ваше приложение как ресурс, а затем извлекать эти данные, когда это необходимо. Эта методика более желательна, так как это может предохранить другие файлы от изменения их и предохранения.
В этой статье будет рассмотрено, как включать звуковые файлы, видео, анимацию и другие двоичные файлы в исполнимый файл Delphi.
Файлы ресурсов (.RES)
Включение нескольких двоичных файлов в исполнимый состоит из 5 шагов:
- Составьте и/или соберите все файлы, которые необходимо включить в EXE
- Создайте файл сценария ресурсов .RC, который описывает все ресурсы, исользуемые Вашим приложением
- Скомпилируйте файл сценария ресурсов .RC, чтобы создать файл ресурсов .RES
- Свяжите скомпилированный файл ресурсов с исполнимым файлом
- Используйте индивидуальные элементы ресурсов
Первый шаг очень прост: просто решите какие файлы Вы хотите хранить в исполнимом. Например, мы будем хранить две .WAV песни, одну .AVI видео и одну .MP3 песню.
Прежде, чем продолжить, есть несколько важных заявлений относительно ограничений при работе с ресурсами:
а) Загрузка и выгрузка ресурсов на время выполнения операции. Ресурсы — часть исполнимого файла приложения и загружается во время выполнения приложения.
б) Вся свободная память может использоваться при загрузке/выгрузке ресурсов. Другими словами, нет никаких пределов в количестве ресурсов, загруженных одновременно.
в) Конечно, файл ресурсов увеличивает размер исполнимого. Если Вы хотите уменьшить размер исполнимого файла, рассмотрите размещение ресурсов и части Вашего проекта в DLL и пакетах.
Теперь давайте посмотрим, как создать файл, который описывает ресурсы.
Создание файла сценария ресурсов (.RC)
Файл сценария ресурсов — это простой текстовый файл с расширением .RC, который перечисляет ресурсы. Файл сценария имеет следующий формат:
ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
{ ... }
ResNameX ResTYPEX ResFileNameX
{ ... }
ResName определяет или уникальное имя или целое число (ID), который обозначает ресурс.
ResType описывает тип ресурса
ResFileName — полный путь и имя файла, который будет включен в ресурс.
Для создания нового файла сценания ресурсов проделайте следующее:
- Создайте новый текстовый файл в каталоге проектов
- Переименуйте его в MyRes.rc
В MyRes.rc записано следующее:
Clock WAVE "c:\mysounds\projects\clock.wav"
MailBeep WAVE "c:\windows\media\newmail.wav"
Cool AVI cool.avi
Intro RCDATA introsong.mp3
Файл сценария просто определяет ресурсы. В данном формате 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 MyRes.rc
По умолчанию, при компилировании ресурсов, BRCC32.exe называет скомпилированный файл с расширением .RES с именем .RC файла и помещает его в тот же каталог, что и .RC.
Подключение файла ресурсов к исполнимому файлу
Мы создали файл ресурсов. В следующем шаге мы должны добавить следующую директиву компилятора в модуле нашего проекта сразу после директивы формы (ниже ключевого слова implementation).
{$R *.DFM} {$R AboutDelphi.RES}
Случайно не удалите {$R *.DFM}, так как эта строка кода сообщает Delphi о подключении визуальной части формы. Когда Вы выбираете точечные рисунки для компонентов SpeedButton, Image или Button, Delphi включает растровый файл, который Вы выбрали как часть ресурса формы.
После того, как .RES файл будет связан с исполняемым файлом, приложение может загружать его ресурсы во время выполнения, когда это будет необходимо. Чтобы фактически использовать ресурс, Вы должны будете сделать несколько вызовов API.
Нам нужен будет новый проект с пустой формой. Добавьте директиву {$R MyRes.res} в модуль главной формы. Как уже было сказано выше, мы будем иметь дело с функциями Windows API.
Например, метод LoadFromResourceName объекта TBitmap. Этот метод извлекает указанный растровый ресурс и назначает его объекту TBitmap. Это аналогично вызову функции LoadBitmap в Windows API. Как всегда, Delphi улучшил вызов функции API, чтобы удовлетворить наши потребности лучше.
Проигрывание анимации из ресурсов
Чтобы показать анимацию cool.avi (который был определен в нашем файле ресурсов), мы будем использовать компонент TAnimate из палитры компонентов Win32, который нужно поместить на главную форму. Оставьте его имя по умолчанию — Animate1. Мы будем использовать событие OnCreate формы, чтобы отобразить анимацию:
procedure TForm1.FormCreate(Sender: TObject) ;
begin
with Animate1 do begin
ResName := 'cool';
ResHandle := hInstance;
Active := TRUE;
end;
end;
Все просто! Как мы можем видеть, чтобы запустить анимацию из ресурсов, мы должны использовать свойства ResHandle, ResName или ResID компонента TAnimate. После установки ResHandle, мы устанавливаем свойство ResName, чтобы определить какой ресурс является видеоклипом AVI, который должен будет отображен управлением TAnimate. Установка свойства Active в True просто запускает анимацию.
Проигрывание WAV
Так как мы включили два файла WAV в наше приложение, теперь посмотрим как извлечь звук из файла и запустить его. Поместите кнопку Button1 на форму и напишите следующий код в обработчик события OnClick:
uses mmsystem;
{ ... }
procedure TForm1.Button1Click(Sender: TObject) ;
var
hFind, hRes: THandle;
Song: PChar;
begin
hFind := FindResource(HInstance, 'MailBeep', 'WAVE') ;
if hFind 0 then begin
hRes:=LoadResource(HInstance, hFind) ;
if hRes 0 then begin
Song:= LockResource(hRes) ;
if Assigned(Song) then SndPlaySound(
Song, snd_ASync or snd_Memory) ;
UnlockResource(hRes) ;
end;
FreeResource(hFind) ;
end;
end;
Этот подход использует несколько вызовов API для загрузки ресурса типа WAV по имени MailBeep и запустить его. Обратите внимание: Вы можете использовать Delphi, чтобы запустить предопределенные системой звуки.
Проигрывание MP3
Единственный файл MP3 имеет имя Intro. Так как ресурс имеет тип RCDATA, мы будем использовать другую методику, чтобы извлеч и запустить MP3 песню. TMediaPlayer может запустить MP3 файл.
Теперь добавьте компонент TMediaPlayer на форму (MediaPlayer1) и добавьте TButton (Button2). Событие OnClick должно быть таким:
procedure TForm1.Button2Click(Sender: TObject) ;
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin
{эта часть извлекает mp3 из exe}
fname := ExtractFileDir(Paramstr(0)) + 'Intro.mp3';
rStream := TResourceStream.Create(hInstance, 'Intro', RT_RCDATA) ;
try
fStream := TFileStream.Create(fname, fmCreate) ;
try
fStream.CopyFrom(rStream, 0) ;
finally
fStream.Free;
end;
finally
rStream.Free;
end;
{эта часть проигрывает mp3}
MediaPlayer1.Close;
MediaPlayer1.FileName:= fname;
MediaPlayer1.Open;
end;
Этот код при помощи TResourceStream извлекает MP3 из exe и сохраняет его в рабочем каталоге приложения. Имя файла MP3 — Intro.mp3. Затем просто назначьте его свойству FileName компонента TMediaPlayer и воспроизведите песню.
Но, присутствует одна небольшая проблема — приложение создает файл MP3 на машине пользователя. Вы можете добавить код, чтобы удалить этот файл перед закрытием прилоожения.
Автор: Zarko Gajic, About.com
Работаем с ресурсами | KV.by
Рано или поздно любой человек,
программирующий под Windows (имеется в
виду платформа Win32), сталкивается с
необходимостью работы с ресурсами.
Когда настанет этот момент — в
первую очередь, зависит от среды
разработки и библиотек, которыми
программист пользуется. Некоторые
ориентированы на работу
непосредственно с ресурсами с
самого начала, другие же позволяют
в большинстве случаев обойтись и
без них. Однако когда возникает
необходимость отредактировать
какой-то ресурс, как раз последние
среды разработки не могут
похвастаться удобными редакторами.
В этой статье, как вы, наверное, уже
догадались, мы поговорим о
ресурсах. И о том, как с ними можно
работать с максимальным комфортом.
Что такое ресурсы
Если вы уже достаточно
программировали под Win32, то не
можете не знать, что такое ресурсы.
Однако у начинающих программистов
этот термин нередко вызывает
вопросы, поэтому, думаю, будет
нелишним напомнить (или объяснить),
что мы имеем в виду, когда говорим
«ресурс».
Ресурсы — это данные, помещённые в
специально отведённую для них
область исполняемого файла. Как
известно, исполняемые файлы могут
содержать не только программный
код, но и данные. В ОС такие файлы
Windows разбиты на секции. Если данные
находятся в секции, отведённой для
ресурсов, значит, это ресурсы. Чем
ресурсы отличаются от любых
остальных данных внутри EXE-файла?
Собственно, только тем, что система
предоставляет программисту
специальные функции для работы с
ними.
Традиционно выделяют разные типы
ресурсов. К стандартным относятся
значки (иконки), курсоры для мыши,
bitmap-картинки, строки и таблицы
строк, комбинации «горячих»
клавиш (accelerators), меню, диалоговые
окна и информация о версии
приложения. Существует также
специальный тип ресурсов под
названием RCDATA, позволяющий
добавить в программу любые данные,
не подходящие под приведенную выше
классификацию, и работать с ними
тоже как с обычными ресурсами.
Для чего они нужны
«Классическое»
программирование под Win32, давно
ставшее анахронизмом,
предусматривает такой подход к
созданию приложений, при котором
ресурсы используются более чем
интенсивно. Однако в большинстве
сред разработки, с которыми
поставляются фирменные библиотеки
для создания пользовательского
интерфейса, ресурсы задействованы
не совсем так, как предлагали
создатели операционной системы.
Например, в Borland Delphi и C++ Builder все
формы (окна) и всё, что на них,
включая меню и таблицы
«горячих» клавиш, находятся в
секции RCDATA в виде специального
текстового описания формы.
Собственно, в связи с этим может
возникнуть один довольно здравый
вопрос: а в чём вообще смысл
использования ресурсов? Ведь можно
прекрасно создать меню и
диалоговые окна прямо по ходу
работы приложения, с помощью
стандартных функций Win32 API. Зачем же
усложнять всё, создавая сначала
ресурсы, а уже после вызывая их из
приложения? Ответ довольно прост.
Вынесение всех описанных выше
видов ресурсов в отдельную часть
исполняемого файла облегчает
задачу по их изменению в уже
скомпилированной программе.
Согласитесь, изменить содержимое
ресурса с помощью специального
редактора намного легче, чем её
дизассемблировать и менять
ассемблерный код. Однако тут же
возникает ещё один вопрос, тоже
вполне логичный. Зачем может
понадобиться изменение ресурсов?
Самый простой пример — локализация
программы. Для перевода интерфейса
программы на другой язык
достаточно воспользоваться
редактором ресурсов, причём
сделать это может даже человек,
достаточно далёкий от
программирования. А пользователи
любят локализованные программы…
Инструментарий
Для работы с ресурсами,
естественно, нужен специальный
инструментарий. Его можно
разделить на несколько видов: WYSIWYG1-редакторы
ресурсов, компиляторы ресурсов и
редакторы ресурсов, которые
работают с исполняемыми файлами.
До того, как ресурс попадёт в
исполняемый файл, он может
пребывать в двух состояниях: в виде
скрипта или в виде
скомпилированного файла ресурсов.
Файлы со скриптами — текстовые
файлы с расширением 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, т.е. в
редакторе всё выглядит так же, как
будет выглядеть при работе
программы
Создание ресурсов
9.4.1.
Создание ресурсов
Для создания ресурса
любого типа можно использовать редактор
ресурсов Resourse Workshop или один из
компиляторов ресурсов — BRC.EXE или BRCC.EXE.
Поскольку редактор ресурсов работает
только в среде Windows, а эта операционная
система необязательно установлена на Вашем
ПК, дальше описывается процесс создания
ресурсов с помощью компиляторов, которые
работают под управлением MS-DOS.
Компилятор ресурсов
получает текстовый файл описания ресурсов
и производит двоичный ресурсный файл. По
умолчанию расширение текстового файла — RC,
а ресурсного файла — RES. Текст .КС—файла
со— тавляется на специальном языке
описания ресурсов.
Каждый ресурс в RC—файле
содержит заголовок и описание. В заголовке,
имеющем формат
[<ИМЯ_РЕСУРСА>]
<ТИП_РЕСУРСА>
указывается имя
ресурса и его тип. Имя ресурса —
обязательный параметр для всех ресурсов,
кроме строковых. При формировании имени
используются правила создания
идентификаторов Паскаля:
• имя содержит
латинские буквы, цифры и знак подчеркивания;
• имя не может
начинаться с цифры;
• разница в высоте
символов имени игнорируется, т.е. имена MYRES
и MyRes считаются синонимами.
Тип ресурса задается
одним из зарезервированных слов: STRINGTABLE —
для строкового ресурса и RCDATA — для ресурса
пользователя. В отличие от имен эти слова, а
также зарезервированные слова BEGIN и END,
обрамляющие раздел описания ресурса,
должны состоять только из заглавных букв.
Раздел описания
открывается словом BEGIN и завершается словом
END. Каждая строка в строковом ресурсе
описывается следующим образом:
<НОМЕР>»[<СТРОКА>]»
<НОМЕР>
представляет собой произвольное целое
число без знака в диапазоне от 0 до 65535. Это
число трактуется как уникальный
идентификатор строки и не может быть
одинаковым у двух разных строк в пределах
всего RC—файла, (в файле может быть
сколько угодно описаний
строковых ресурсов).
Строка обрамляется двойными кавычками и
может быть пустой, т.е. между обрамляющими
кавычками может не быть ни одного символа.
Если в строку необходимо поместить символ «»»,
он удваивается. На одной текстовой строке
файла можно размещать произвольное
количество описаний строк. Перед номером и
после него может стоять сколько угодно
разделителей — пробелов, символов
табуляции и запятых. Если в строке
встретилась точка с запятой, остаток строки
игнорируется — таким способом можно
вставлять комментарии. Внутри обрамляющих
кавычек разделители теряют свое
специальное назначение и считаются
обычными символами. Пример правильного
описания строкового ресурса:
STRINGT^BLE BEGIN
1 «Первая строка»
2″Вторая строка»5″Пятая строка» ,,,,,4,,,«Четвертая
строка…» END
При выводе строк
этого ресурса в цикле от 1 до 5 не экране
появится такой текст:
Первая строка Вторая
строка Четвертая
строка…
Пятая строка
Как видим, разрыв
концом строки текста Четвертая строка. . .
привел к тому, что вторая часть текста
выводится на следующей строке, но с той же
позиции, на которой закончился вывод первой
части. Это связано с тем, что в строку
вставился лишь символ Перевод строки (#10),
но не вставился Возврат каретки (#13).
Следует заметить, что компилятор ресурсов
обрабатывает текст строки по правилам
языка Си, в котором разрешены так
называемые управляющие символы. Эти
символы начинаются обратной косой чертой,
за которой может следовать латинская буква,
восьмеричное или 16—ричное число в
диапазоне О…255. Восьмеричное число состоит
из восьмеричных цифр (цифры от 0 до 7), перед
16— ричным числом указывается латинская
бука х или X. Комбинация \<ЧИСЛО>
определяет внутренний код вставляемого
символа, т.е. играет такую же роль, что и
константа #<ЧИСЛО> в Паскале. Два
следующих управляющих символа вставляют в
текст строки символ Возврат каретки (#13):
\15 \xD
Комбинация \<БУКВА>
для некоторых букв латинского алфавита
определяет часто используемые символы:
Управляющий
Значение символ
\а Звуковой
сигнал
\Ь Забой слева {Backspace)
\п Перевод
строки
\г Возврат
каретки
\t Табуляция
Если текст примера
отредактировать следующим образом:
4 «Четвертая\п\гстрока»
на экран будет выведено:
Четвертая строка
В связи с тем, что
символ «\» играет специфичную роль, его
нужно удваивать, чтобы компилятор не
рассматривал его как служебный символ:
ресурс
4 «Четвертая\\строка»
даст на экране
Четвертая\строка
Описание ресурса
пользователя в заголовке содержит
зарезервированное слово RCDATA, которому
должно предшествовать имя ресурса. В раздел
описания можно вставлять
• десятичные числа
типа Word, Integer,
• шестнадцатеричные
числа в диапазоне от $0000 до $FFFF; перед
шестнадцатеричным числом ставится символ $;
• цепочки символов в
двойных апострофах по правилам строковых
ресурсов, но без замыкающего нуля; если
требуется поместить в ресурс ASCIIZ—
строку, в ее конце нужно добавить «\0»;
• цепочки байтов в
одиночных апострофах; байты в такой цепочке
задаются в 16—ричном
формате и разделяются пробелами. Пример
правильного описания ресурса пользователя:
My Res RCDATA
BEGIN
«Это — АЗС112-строка\О»
$FFFF, 65535 ; две
формы записи одного числа
«123456789 А’ ; байты со
значениями от 1 до 10
-1 127 ; для этих
чисел будет выделен® ; по 2 байта
END
Длина каждого
ресурса пользователя (а их в одном файле
может быть сколько угодно) кратна 256 байтам.
После подготовки
текстового файла с описанием ресурсов его
следует откомпилировать в КЕБ—файл.
Для этого вызывается компилятор BRCC.EXE
или компилятор—компоновщик BRC.EXE.
Последний не только создает RES—файл, но
и пристыковывает его в конец исполняемого
файла.
Поскольку
компоновщик ВР также умеет работать с
ресурсами (для этого введена директива {$R
RESFNAME[.RES]}], удобнее использовать
компилятор BRCC.EXE. Для его вызова дайте
команду ДОС
BRCC MyRes
(предполагается, что
путь к католгу размещения файла BRCC.EXE
указан в переменной PATH). В результате
такого обращения компилятор откомпилирует
файл MYRES.RC в файл ресурса MYRES.RES.
Глава 9
Оглавление
Ресурсы. Файл описания ресурса
Ресурсы
Практически
в каждой программе используются ресурсы. Файл описания ресурса RC определяет такие компоненты, как меню, диалоговые окна,
пиктограммы, растровые изображения и другие данные ресурсов, применяемые в
приложении. Файл ресурса позволяет отказаться от использования отдельных
файлов, считываемых приложением. Ресурсы эффективны также потому, что
загружаются в память только по мере необходимости.
Файлы
описания ресурса транслируются транслятором ресурса (обычно называемым RC.EXE), который вырабатывает файл RES. После компоновки
выполняемого файла (ЕХЕ) файл RES присоединяется
к концу выполняемой программы. После этого все ресурсы, определенные в файле RC, становятся
частью выполняемого файла и могут применяться во время выполнения программы.
Файлописанияресурса
Все
ресурсы, используемые приложением, должны быть определены в файле описания
ресурса. В листинге 7.1 показан простой файл описания ресурса с однострочным
ресурсом, ICON, и многострочным
ресурсом, MENU.
Листинг 7.1. Простойфайлописанияресурса____________________________________________
#include
<windows.h> #include «myapp.h»
// Однострочноеописаниересурса МуАррICONmyapp.ico
// Многострочноеописаниересурса
МуАррMENU
BEGIN
POPUP
«SFile»
BEGIN
MENUITEM
«Ebxit», IDM_EXIT
END
MENUITEM ««Test!»,
IDMJTEST
POPUP
«SHelp»
BEGIN
MENUITEM » bAbout
MyApp . . . » , IDM_ABOUT
ENDEND
Этот файл
описания ресурса включает файл используемой в приложении пиктограммы и
определяет главное меню приложения.
Существует
пять типов однострочного описания ресурса: BITMAP, CURSOR, ICON. FONT
и MESSAGETABLE. Каждый из этих операторов загружает файл данных указанного
типа в данные ресурса. После включения этих данных в данные ресурса могут
применяться функции LoadBitmap, LoadCursor и Loadlcon для непосредственного
доступа к соответствующим данным в программе. Функция AddFontResource обычно используется
для добавления данных шрифта, применяемых в приложении. Для загрузки сообщений
из файла ресурса служит функция FormatMessage. Существует пять типов
многострочного описания ресурса: ACCELERATORS, DIALOG, MENU, RCDATA и STRINGTABLE. Первые три рассматриваются в главе 6 и главе 8. Операторы RCDATA
и STRINGTABLE рассматриваются далее в этой главе. Многострочные типы
описания ресурсов легко распознать. В них для определения блоков данных ресурса
используются операторы BEGIN и END, как показано для типа MENU в листинге 7.1.
Таблицы строк
В
большинстве приложений в сообщениях и текстовом выводе применяются символьные
строки. В системе Windows в качестве
альтернативы обычному методу размещения строк в области статических данных
программы предусмотрены таблицы строк. Символьные строки определяются в файле
описания ресурса и приобретают идентификационное значение. Ниже приведен пример таблицы строк:
STRINGTABLE
BEGIN
IDS_STRING1
«Simple string from .RC»
IDS_STRING2
«This text contains a \ttab,\nand a new line.»
IDS_STRING3
«This text is used with wsprintf() %s %d.»
END
Идентификационные
значения строк обычно определяются в отдельном файле заголовка, который
включен в файл описания ресурса, наряду с модулем, обеспечивающим доступ к
строкам. Когда в приложении необходимо использовать эти данные, функция LoadString копирует символьные
данные из файла ресурса в буфер памяти. Строки в таблице могут содержать
управляющие символы, такие как символы табуляции и символы новой строки.
Применение
таблиц строк имеет ряд преимуществ, основное из которых — сокращение объема
используемой памяти. Строки не загружаются до тех пор, пока они не потребуются.
Система Windows загружает
строки блоками с учетом идентификационных номеров строк. Строки, которые с
наибольшей вероятностью будут использоваться совместно, должны быть
пронумерованы последовательно в пределах небольших групп.
Преимущество
использования таблиц строк исчезает, если строковые данные копируются в
статический буфер памяти. Буфер занимает место, даже если в него не загружаются
символьные данные из таблицы строк. Приложения должны загружать строки в
стековые переменные (локальные переменные для блока кода) или в глобально распределенную
память.
Еще одним
преимуществом помещения строк в таблицу строк является поддержка нескольких
языков. API Win32 поддерживает
многоязычные ресурсы в одном приложении. Одна и та же выполняемая программа
может поставляться в несколько стран без изменений.
Ресурсы, определяемые пользователем
Файлы
ресурса могут также применяться для других типов статических данных, к которым
относится все, что угодно, — от метафайлов до произвольных двоичных данных.
Для произвольных данных используется оператор RCDATA в описании ресурсов. Пример применения этого оператора
приведен ниже:
DatalDRCDATABEGIN
3
40
0x8232
«StringData (continued)… «
«MoreStringDataNO» END
Delphi работа с ресурсамиmirsovetov.net
Проблема: Нужно загрузить (png, jpg, ico) картинку, курсоры (cur) или другие файлы в виде ресурса. Для простоты реализуем загрузку png картинки.
Инструментарий: Delphi XE5, текстовый редактор(notepad, notepad++..)
Решение:
Для использования файла ресурса в программе, есть несколько вариантов, отличаются они только тем что в первом случае нужно делать все руками, во втором — можно сделать все то же, намного проще.
I способ (добавление ресурса)
- Создать файл ресурса (простой текстовый файл с расширением *.rc), к примеру ImgRes.rc
- Занести список файлов, которые нужно будет использовать в программе (список вносится в определенном формате: «Название ресурса» «Название блока где будет размещен ресурс (RCDATA)» «расположение и название файл»)
HELP RCDATA «..\IMG\help.png»
- Создадим файл с расширением *.bat со следующим содержимым:
brcc32.exe ImgRes.rc
где
brcc32.exe — утилита которая расположена в установленной папке Delphi\BIN
ImgRes.rc — файл со списком ресурсов
- Запускаем наш созданный *.bat файл, после чего создастся файл ImgRes.RES
- Подключить модуль ресурса к программе (в исходном тексте… )
{$R 'ImgRes.res'}
II способ (добавление ресурса)
- В Delphi открыть пункт меню Project -> Resources and Images (Рис. 1)
- В появившемся окне (Рис. 2) нажимаем кнопку Add
- В появившемся окне выбираем файл с картинкой или тот файл что вы хотите загрузить с ресурса
- В поле Resource Identifer нужно написать название имя ресурса (В моем примере это Resource Identifer = HELP. (Рис.3))
- Если ресурсов нужно загрузить несколько — возвращаемся к пункту 2
- Жмем ОК
Рисунок 1 — Меню Resources and Images…
Рисунок 2 — Resources and Images…
Рисунок 3 — Resources and Images…
Использование ресурса в программе
uses
PngImage;
...
var
Png: TPngImage;
begin
Png := TPngImage.Create;
try
Png.LoadFromResourceName(HInstance, 'HELP');
Img1.Picture.Graphic := Png; // Img1: TImage на форме
finally
Png.Free;
end;
end;
PS: Исходник проекта можно посмотреть и скачать на github. В репозитории находится две папки, которые содержат первый и второй способ работы с ресурсами. В папке ResFile — реализация первого метода, в папке ResFromManager реализация второго метода загрузки ресурса.
Автор: Александр Андрощук
Файл ресурсов
Файл ресурсов является текстовым файлом
и имеет стандартное расширение .RC.
В данной программе в него включено
только описание меню; вообще же в файле
ресурсов можно описывать диалоговые
окна, растровые изображения, пиктограммы,
курсоры, таблицы символьных строк и пр.
Различные ресурсы описываются в файле
ресурсов в специальных форматах, понятных
для компилятора ресурсов, входящего в
состав любой среды программирования,
в частности, пакета Borland С++. Обработка
исходного текста самой программы и
исходного текста ресурсов происходит,
можно сказать, параллельно
(рис. 3.2): компилятор исходного текста
программы обрабатывает файл .CPP,
образуя двоичный объектный файл с
расширением .OBJ, а компилятор
ресурсов обрабатывает файл .RC,
получая из него промежуточный файл с
расширением .RES.
Рис. 3.2. Процесс
создания выполнимого файла для программы
с ресурсами
Далее компоновщик компонует файлы .OBJи .RES, собирая из них единый
загрузочный файл с расширением .EXE,
который включает в себя программные
коды, данные и ресурсы. После образования
загрузочного файла промежуточные файлы
с расширениями .OBJи .RESуже не нужны; их вполне можно удалить,
так как все необходимое для выполнения
программы входит в файл .EXE.
Существенно, что элементы приложения,
описанные в файле ресурсов (например,
форматы меню и диалогов, а также тексты
и рисунки) не разбросаны по загрузочному
файлу, а сосредоточены в одном месте и
хранятся в определенном формате (рис.
3.3). Это дает возможность специальным
программам, понимающим этот формат,
читать и даже модифицировать ресурсы
непосредственно в загрузочном файле
приложения – действие, совершенно
невозможное в традиционных программах,
не использующих понятие ресурсов.
Рис. 3.3. Возможное
размещение ресурсов в загрузочном файле
приложения
Преимущества, возникающие при выделении
определенных объектов в файл ресурсов,
носят многоплановый характер:
Программа требует меньше памяти, так
как ресурсы могут загружаться (из файла
.EXE) лишь по мере надобности.
Если, например, в виде ресурсов хранятся
строки аварийных сообщений, они могут
подгружаться в память лишь в случае
возникновения ошибок, при которых эти
сообщения должны выводиться на экран,
а при нормальном выполнении занимать
место в памяти не будут.Файл ресурсов проще выглядит и имеет
бόльшую наглядность, чем исходный текст
программы. Редактирование состава меню
и диалоговых окон или содержимого
текстовых строк значительно удобнее
выполнять в отдельном файле ресурсов,
чем в исходном тексте программы.Использование ресурсов упрощает
структуру и содержание программы, так
как при описании, например, меню в файле
ресурсов система берет на себя организацию
и показ меню, а программист должен лишь
обеспечить содержательную обработку
команд меню.Специальные инструментальные средства,
разработанные для редактирования
ресурсов, в частности входящая в состав
IDE Borland C++ программа Resource Workshop (“мастерская
ресурсов”), существенно облегчают
разработку и редактирование меню,
диалогов, пиктограмм и курсоров.
То же можно сказать про средуMicrosoft Visual C++, в которую
встроены средства визуального создания
и редактирования ресурсов.Ресурсы можно редактировать непосредственно
в загрузочном файле приложения (с
помощью упомянутого выше
редактора ресурсов). Это, в частности,
дает возможность переводить тексты
сообщений и меню на другой язык, не имея
исходных текстов приложений (так
называемая локализация программных
продуктов).Ресурсы, например, изображения элементов
управления, кнопок, курсоров, пиктограмм
и пр. можно извлечь из загрузочного
файла приложения, чтобы использовать
их в другом приложении.
Разработка ресурсов меню и акселераторов клавиатуры. Файл заголовков (resource.h). Файл ресурсов (MENU3.RC). Файл приложения (MENU3.CPP).
Разработка ресурсов меню и акселераторов клавиатуры. Файл заголовков (resource.h). Файл ресурсов (MENU3.RC). Файл приложения (MENU3.CPP).
Меню — это список пунктов или имен, которые представляют возможные действия приложения. Пользователь может выбрать пункт меню при помощи мыши, клавиатуры или горячей клавиши.
Меню Resource позволяет вызывать редактор для создания или изменения ресурсов меню. Альтернативная (и часто предпочтительная) методика состоит в использовании при создании меню текстового редактора. Он может создавать и модифицировать описание меню в файле описания ресурсов (.RC). Этот файл содержит обыкновенный (не откомпилированный) текст.
Быстрые клавиши чаще всего используются создателями меню в качестве «клавиш быстрого доступа» для обращения к командам меню. Например, в меню есть 12 пунктов, каждый из которых выбирает соответствующий цвет фона. Пользователь может выбирать мышью из меню, а может использовать быстрые клавиши. Если используются быстрые клавиши, можно, например, выбирать цвет функциональными клавишами, и тогда меню вообще не будет появляться на экране.
Resource.h — Файл заголовка, создаваемый средой разработки; содержит определения символов.
Windows автоматически реагирует на выбор команды меню, генерирует сообщение о том, какой пункт выбран. Иконки, курсоры, битовые образы являются составной частью файла ресурсов.
Меню записывается с помощью спец. команд. Пример меню:
IDR_MENU1 MENU
BEGIN
POPUP “&Disk_Information”
BEGIN
MENUITEM “&Total Disk Space”, 40009
MENUITEM “&Free Disk Space”, IDM_TDS
MENUITEM “&Current Drive and Path”, 40010
MENUITEM SEPARATOR
MENUITEM “&Windows Version”, IDM_WV
END
POPUP “&Time/Date_Information”
BEGIN
MENUITEM “System T&ime”, IDM_TIME
MENUITEM “System &Date”, 40013
END
END
Для создания меню используются зарезервированные слова:
1. MENU – описатель создаваемого файла
2. POPUP – определяет ключевое слово для создаваемого меню
3. SEPARATOR – разделитель команд меню
4. MENUITEM – команды меню
Аналогом SEPARATOR является MENUBARBREAK. Команды меню записываются как строковые значения. Для обращения к командам меню могут использоваться идентификаторы, записываемые как символьные, так и константные.
Для использования «горячих» клавиш по умолчанию используется комбинация Alt + буква меню. Используемая буква определяется с помощью амперсанта(&).
5. BEGIN и END формируют группу команд главного меню
Для описания идентификатора меню используется префикс IDM_. Это не является обязательным требованием (установлено по умолчанию).
Кроме описанных ключевых слов могут применяться:
1. CHECKED – рядом с пунктом меню располагается отмена;
2. END – является последним пунктом выпадающего или статического меню;
3. GRAYED – пункт меню неактивен и выводится в списке пунктов меню бледным;
4. HELP – пункт меню является выравненным по правому краю статическим меню, выбираемым с клавиатуры;
5. INACTIVE – пункт меню выводится в списке, но не может быть выбран в данных обстоятельствах;
6. MENUBREAK – пункт меню помещается в новый столбец;
7. MENUBARBREAK – пункт меню помещается в новый столбец, пункты разделяются чертой;
8. OWNERDRAWN – за вывод пункта меню, включая выделенное неактивное о отмеченное состояние, отвечает владелец меню.
Акселераторы делают возможным вызов команды меню при нажатии на одну клавишу, которая назначается пользователем(F1-F12).
IDR_MENU1 MENU
BEGIN
POPUP “&Rectangle_Size”
BEGIN
MENUITEM “&small”, IDM_SMALL
MENUITEM “&Medium”, IDM_MEDIUM
MENUITEM “&Large”, IDM_LARGE
END
POPUP “Ba&ckground_Colors”
BEGIN
MENUITEM “Black&K\tF1”, IDM_BLACK
MENUITEM “&White\tF2”, IDM_WHITE
MENUITEM “&Red\tF3”, IDM_RED
MENUITEM SEPARATOR
MENUITEM “LT GR&EEN\tF9”, IDM_LTGREEN
MENUITEM “LT BL&UE\Tf10”, IDM_LTBLUE
END
END
Определение F1-F12 в MENUITEM не сделало их акселераторами. Для определения акселератора создается соответствующий файл:
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, IDM_BLACK, VIRTKEY
NOINVERT
VK_F10, IDM_LTBLUE, VIRTKEY
NOINVERT
VK_F9, IDM_LTBLUE, VIRTKEY
NOINVERT
VK_F9, IDM_RED, VIRTKEY
NOINVERT
VK_F2, IDM_WHITE, VIRTKEY
NOINVERT
VK_F5, IDM_YELLOW, VIRTKEY
END
Акселераторы могут быть созданы в текстовом редакторе или с помощью мастера.
Описание акселератора содержится в файле ресурсов. При описании любого акселератора используется синтаксис:
event, id, [type] [NOINVERT] [SHIFT] [CONTROL]
Ключевые слова в []не являются обязательными.
1. event описывает комбинацию клавиш, используемых в качестве акселератора; может быть записан целым числом, которое соответствует колу ASCII. Префикс VK не требует определения кода ASCII;
2. id – идентификатор акселератора;
3. type – содержит значения кода ASCII или виртуальные клавиши;
4. NOINVERT – при использовании выбираемых клавиш акселератора не будет выделяться пункт меню верхнего уровня;
5. SHIFT и CONTROL активизируют акселератор только при нажатии соответствующих клавиш.
Файл заголовков (MENU3.H)
В файле заголовков содержатся определения идентификаторов меню. Идентификаторы соответствуют следующим пунктам меню:
IDM_TDS общий объем дискового пространства
IDM_FDS объем свободного дискового пространства
IDM_DD принятый по умолчанию накопитель
IDM_WV текущая версия Windows
IDM_DATE текущая дата
IDM_TIME текущее время
Файл ресурсов (MENU3.RC)
В файле ресурсов для данного приложения содержится описание двух меню. Первое, Disk_Information, позволяет пользователю получить информацию, связанную с диском и номером версии. Второе меню, Time/Date_Information, предназначено для вывода времени и даты. Обратите внимание на то, что в описании первого выпадающего меню после идентификатора IDM_DD содержится элемент MENUBARBREAK. Результат такого описания показан на рис. 7.6.
Файл приложения (MENU3.C)
В данном приложении вся информации, предназначенная для вывода на экран, заносится в массив szMessage независимо от выбранного пункта меню. Данный массив описан как содержащий 50 символов. Реальная длина строки содержится в переменной sLength. Обе вышеупомянутые глобальные переменные описаны в начале приложения.
Информация о времени и дате содержится в структуре SYSTEMTIME.
Для обработки выбранных пунктов меню при помощи операторов case используется сообщение WM_COMMAND.
Общий объем дисковою пространства вычисляется при помощи функции GetDiskFrceSpace().Текущее время также запрашивается при помощи соответствующего пункта меню. В данном случае, вызывается функция GetSystemTiine().
Информация о времени и дате заносится в переменную st. которая представляет собой экземпляр структуры SYSTEMTIME (определенной в файле WINDOWS.Н или WINBASE.H). Ниже представлено описание структуры SYSTEMTIME:
typedef struct _J3YSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliSeconds;
} SYSTEMTIME;
Другие пункты меню обрабатываются сходным способом.
Независимо от того, какой пункт меню был выбран пользователем, информация сохраняется в массиве szMessage и выводится в окно при обработке сообщения WM PA1NT. Выведенная в окне информация обновляется при выборе любого пункта меню, поскольку в конце блока обработки сообщения WM_COMMAND вызывается функция InvalidateRect().
Дата добавления: 2015-09-03; просмотров: 116 | Нарушение авторских прав
Читайте в этой же книге: Статические органы управления | Вывод окна | Виртуальные клавиши. Системные таймеры. Срабатывание таймера. Эффективное использование механизма таймеров. | Простое приложение Windows. Оболочка для всех приложений. Эффективное использование описателей. Компоненты приложения Windows. Функция WinMain(). Регистрация класса окна. | Простое приложение Windows. style. lpfnWndProc. cbClsExtra. cbWndExtra. hinstance. hIсоn. hCursor. hbrBackground. IpszMenuName. IpszClassName. | Создание окна с помощью функции CreateWindow | Приложение с циклом обработки сообщений | Оконные классы | То получим внутри прямоугольника эллипс. | Добавление курсоров |
mybiblioteka.su — 2015-2020 год. (0.014 сек.)
О файлах ресурсов — приложения Win32
- 2 минуты на чтение
В этой статье
Чтобы включить ресурсы в ваше Windows-приложение с RC, сделайте следующее:
- Создавайте отдельные файлы для курсоров, значков, растровых изображений, диалоговых окон и шрифтов.
- Создайте сценарий определения ресурса (файл .rc), который описывает ресурсы, используемые вашим приложением.
- Скомпилируйте сценарий с помощью RC. Для получения дополнительной информации см. Использование RC (Командная строка RC).
- Свяжите скомпилированный файл ресурсов (.res) с исполняемым файлом приложения с помощью компоновщика.
Файл ресурсов — это текстовый файл с расширением .rc. В файле могут использоваться однобайтовые, двухбайтовые символы или символы Юникода. Синтаксис и семантика препроцессора RC аналогичны таковым из компилятора Microsoft C / C ++.Однако RC поддерживает подмножество директив препроцессора, определений и прагм в сценарии.
Файл сценария определяет ресурсы. Для ресурса, который существует в отдельном файле, например значка или курсора, сценарий указывает ресурс и файл, который его содержит. Для некоторых ресурсов, например меню, полное определение ресурса существует в сценарии.
В следующих разделах описывается информация, которую может содержать файл сценария:
.
Использование RC (командная строка RC) — приложения Win32
- 3 минуты на чтение
В этой статье
Чтобы запустить RC, используйте следующую команду.
RC [ опции ] файл-скрипт
Файл сценария Параметр указывает имя файла определения ресурса, который содержит имена, типы, имена файлов и описания ресурсов, которые должны быть скомпилированы.
RC может создавать отдельные файлы ресурсов для приложений, которые имеют как языковые, так и зависящие от языка ресурсы. Разработчики могут использовать файл конфигурации ресурсов или установить параметры командной строки, чтобы выбрать, какие типы ресурсов и элементы являются нелокализуемыми ресурсами файла, не зависящего от языка (LN), а какие — локализуемыми ресурсами файлов MUI для конкретного языка. Для получения дополнительной информации см. Многоязычный пользовательский интерфейс.
Параметры Параметр может быть одним или несколькими из следующих параметров командной строки.
Опции
/?
Отображает список параметров командной строки.
/ с
Определяет кодовую страницу, используемую при преобразовании NLS.
/ д
Определяет символ для препроцессора, который можно протестировать с помощью директивы #ifdef .
/ FM Имя
RC создает один не зависящий от языка.RES файл и один зависящий от языка (MUI) файл .RES, использующий файл сценария . Эта опция должна использоваться вместе с опцией / fo resname . RC называет не зависящий от языка файл .RES resname.res и называет зависящий от языка (MUI) файл .RES mresname.res .
Windows Server 2003 и Windows XP / 2000: Этот параметр недоступен без использования функций LoadMUILibrary и FreeMUILibrary в обновленной системе.
/ fo переименовать
RC создает файл .RES с именем resname , используя файл сценария .
Если также установлена опция / fm mresname , RC создает один не зависящий от языка файл .RES и один файл .RES, зависящий от языка (MUI).
Windows Server 2003 и Windows XP / 2000: Этот параметр недоступен без использования функций LoadMUILibrary и FreeMUILibrary в обновленной системе.
/ г1
Если / g1, установлено, RC генерирует файл MUI, если единственный локализуемый ресурс, включаемый в файл MUI, является ресурсом версии. Если / g1 не установлен, RC не будет генерировать файл MUI, если единственный локализуемый ресурс, включаемый в файл MUI, является ресурсом версии.
/ ч
Отображает список параметров командной строки.
/ я
Выполняет поиск в указанном каталоге перед поиском в каталогах, заданных переменной среды INCLUDE.
/ j loctype
Локализуемые типы ресурсов RC помещает в зависящий от языка (MUI) файл .RES. Если также задана опция / q , эта опция игнорируется, и информация в файле конфигурации RC имеет приоритет.
Windows Server 2003 и Windows XP / 2000: Этот параметр недоступен без использования функций LoadMUILibrary и FreeMUILibrary в обновленной системе.
/ к сверхтип
Перекрывающиеся типы ресурсов, которые RC помещает как в файлы .RES, не зависящие от языка, так и в файлы .RES, зависящие от языка (MUI). Типы ресурсов, указанные в параметре / k , должны быть подмножеством тех, которые указаны в параметре / j . Например,? J2? J3? K3 указывает, что RC размещает тип ресурса 3 как в языково-нейтральных, так и в языковых (MUI) файлах. Если также задана опция / q , эта опция игнорируется, и информация в файле конфигурации RC имеет приоритет.
Windows Server 2003 и Windows XP / 2000: Этот параметр недоступен без использования функций LoadMUILibrary и FreeMUILibrary в обновленной системе.
/ л ланг.
Задает язык по умолчанию для компиляции. Например, -l409 эквивалентно включению следующего оператора в верхней части файла сценария ресурсов:
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
Для получения дополнительной информации см. Идентификаторы языков.
/ п.
Null завершает все строки в таблице строк.
/ q Mui.RCConfig
Файл конфигурации RC, соответствующий формату файла конфигурации RC. Формат файла конфигурации RC позволяет компонентам самостоятельно описывать информацию о ресурсах, такую как управление версиями ресурсов, путь к файлу MUI, типы ресурсов и элементы. Этот файл определяет, какие ресурсы переходят в не зависящий от языка.RES и какие ресурсы входят в зависящий от языка (MUI) файл .RES. Эта опция и информация, предоставленная в файле конфигурации RC, переопределяют параметры командной строки / j и / k .
Windows Server 2003 и Windows XP / 2000: Этот параметр недоступен без использования функций LoadMUILibrary и FreeMUILibrary в обновленной системе.
/ п
Игнорируется.Предоставляется для совместимости с существующими make-файлами.
/ u
Не определяет символ для препроцессора.
/ v
Отображает сообщения, сообщающие о ходе работы компилятора.
/ х
Не позволяет RC проверять переменную среды INCLUDE при поиске файлов заголовков или файлов ресурсов.
Примечания
Параметры не чувствительны к регистру, вместо косой черты (/) можно использовать дефис (-).Вы можете комбинировать однобуквенные варианты, если они не требуют дополнительных параметров.
RC не будет генерировать файл MUI в следующих случаях.
- В файле .rc нет локализуемых ресурсов.
- Единственный идентификатор языка ресурсов, указанный в файле .rc, является нейтральным (0x0).
- В файле .rc есть ресурсы, которые указаны на нескольких языках. Исключением является то, что файл .rc содержит два языка, и один из них является нейтральным (0x0), RC создает файл MUI.
Дополнительные сведения см. В следующих разделах:
Многоязычный пользовательский интерфейс
.
операторов определения ресурсов — приложения Win32
- 3 минуты на чтение
В этой статье
Операторы определения ресурса определяют ресурсы, которые компилятор ресурсов помещает в файл ресурсов (.Res). После того, как файл .Res связан с исполняемым файлом, приложение может загружать свои ресурсы во время выполнения по мере необходимости.Все операторы ресурсов связывают идентифицирующее имя или номер с данным ресурсом.
Операторы определения ресурса можно разделить на следующие категории:
- Ресурсы
- Элементы управления
- Выписки
В следующих таблицах описаны операторы определения ресурсов.
ресурсов
Ресурс | Описание |
---|---|
АКСЕЛЕРАТОРЫ | Определяет клавиши-ускорители меню. |
BITMAP | Определяет растровое изображение, называя его и указывая имя файла, который его содержит. (Чтобы использовать конкретное растровое изображение, приложение запрашивает его по имени.) |
КУРСОР | Определяет курсор или анимированный курсор, называя его и указывая имя файла, который его содержит. (Чтобы использовать конкретный курсор, приложение запрашивает его по имени.) |
ДИАЛОГ | Определяет шаблон, который приложение может использовать для создания диалоговых окон. |
DIALOGEX | Определяет шаблон, который приложение может использовать для создания диалоговых окон. |
ШРИФТА | Задает имя файла, содержащего шрифт. |
HTML | Задает файл HTML. |
ЗНАЧОК | Определяет значок или анимированный значок, называя его и указывая имя файла, который его содержит. (Чтобы использовать конкретный значок, приложение запрашивает его по имени.) |
МЕНЮ | Определяет внешний вид и функции меню. |
МЕНЮЕКС | Определяет внешний вид и функции меню. |
СООБЩЕНИЕ | Определяет таблицу сообщений, называя ее и указывая имя файла, который ее содержит. Файл представляет собой двоичный файл ресурсов, созданный компилятором сообщений. |
всплывающее окно | Определяет пункт меню, который может содержать пункты меню и подменю. |
ПЛАГПЛЕЙ | Устарело. |
RCDATA | Определяет ресурсы данных. Ресурсы данных позволяют включать двоичные данные в исполняемый файл. |
СТРОКА | Определяет строковые ресурсы. Строковые ресурсы — это строки Unicode или ASCII, которые могут быть загружены из исполняемого файла. |
ТЕКСТИНКЛЮД | Специальный ресурс, интерпретируемый Visual C ++.Для получения дополнительной информации см. TN035. |
TYPELIB | Специальный ресурс, который используется с параметрами компоновщика / TLBID и / TLBOUT. |
Определяется пользователем | Определяет ресурс, содержащий данные для конкретного приложения. |
VERSIONINFO | Определяет ресурс информации о версии. Содержит такую информацию, как номер версии, предполагаемая операционная система и т. Д. |
VXD | Устарело. |
Для получения дополнительной информации о предопределенных ресурсах MFC см. TN023 и TN024.
Органы управления
Управление | Описание |
---|---|
AUTO3STATE | Создает автоматический элемент управления флажком с тремя состояниями. |
AUTOCHECKBOX | Создает автоматический элемент управления флажком. |
АВТОРАДИОКОБКА | Создает автоматический переключатель с переключателем. |
ПРОВЕРКА | Создает элемент управления флажком. |
COMBOBOX | Создает элемент управления поля со списком. |
УПРАВЛЕНИЕ | Создает определяемый приложением элемент управления. |
CTEXT | Создает элемент управления с центрированным текстом. |
КНОПКА ОТКЛОНЕНИЯ | Создает кнопочный элемент управления по умолчанию. |
РЕДАКТИРОВАТЬ ТЕКСТ | Создает элемент редактирования. |
ГРУППОВОЙ ЯЩИК | Создает элемент управления группового поля. |
ЗНАЧОК | Создает значок управления. Этот элемент управления представляет собой значок, отображаемый в диалоговом окне. |
СПИСОК | Создает элемент управления в виде списка. |
LTEXT | Создает текстовый элемент управления с выравниванием по левому краю. |
ПУШКА | Создает элемент управления push-box. |
КНОПКА | Создает кнопочный элемент управления. |
РАДИОНОСКА | Создает радио-кнопку управления. |
RTEXT | Создает выровненный по правому краю элемент управления. |
ПРОКРУТКА | Создает полосу прокрутки. |
ГОСУДАРСТВЕННЫЙ 3 | Создает элемент управления флажком с тремя состояниями. |
Заявления
Заявление | Описание |
---|---|
CAPTION | Задает заголовок диалогового окна. |
ХАРАКТЕРИСТИКИ | Задает информацию о ресурсе, который может использоваться инструментом, который может читать или записывать файлы определения ресурсов. |
КЛАСС | Устанавливает класс диалогового окна. |
EXSTYLE | Устанавливает расширенный стиль окна диалогового окна. |
ШРИФТА | Задает шрифт, которым система будет рисовать текст для диалогового окна. |
ЯЗЫК | Устанавливает язык для всех ресурсов до следующего оператора LANGUAGE или до конца файла. Когда оператор LANGUAGE появляется перед началом тела определения ресурса ACCELERATORS , DIALOG , MENU , RCDATA или STRINGTABLE , указанный язык применяется только к этому ресурсу. |
МЕНЮ | Устанавливает меню для диалогового окна. |
МЕНЮ | Определяет пункт меню. |
СТИЛЬ | Задает стиль окна для диалогового окна. |
ВЕРСИЯ | Задает информацию о версии для ресурса, который может использоваться инструментом, который может читать или записывать файлы определения ресурсов. |
.
Утилиты ресурсов — приложения Win32
- 15 минут на чтение
В этой статье
В этом разделе описаны две утилиты, используемые для создания приложений MUI. Хотя MUIRCT является специфическим для MUI инструментом, MUI также использует стандартную утилиту Windows RC Compiler. Инструкции по использованию этих утилит приведены в разделах «Локализация ресурсов» и «Сборка приложения».
Утилита MUIRCT
MUIRCT (Muirct.exe) — это служебная программа командной строки для разделения стандартного исполняемого файла на LN-файл и языковые (то есть локализуемые) файлы ресурсов. Каждый из полученных файлов содержит данные конфигурации ресурсов для ассоциации файлов. MUIRCT входит в состав Microsoft Windows SDK для Windows Vista.
Примечание
Начиная с Windows Vista, загрузчик ресурсов Win32 обновлен для загрузки ресурсов из файлов для конкретного языка, а также из файлов LN.
MUIRCT Использование
Разделить двоичный файл на основной двоичный файл и файл mui на основе файла rc_config.
Muirct -q rc_config [-c файл_контрольной суммы [-b LangID]] [-x LangID] [-g LangId] [-f] [-m] [-v level] исходный_файл [output_LN_file] [output_MUI_file]
Извлечь контрольную сумму из файла контрольной суммы и вставить ее в выходной_файл.
Muirct -c файл_контрольной суммы [-b LangID] -e файл_вывода
Вычислить контрольную сумму на основе файла контрольной суммы и вставить ее в выходной_файл.
Muirct -c файл_контрольной суммы [-b LangID] -q rc_config -z файл_вывода
Дамп содержимого данных конфигурации ресурса из input_file.
Muirct -d входной_файл
Синтаксис MUIRCT
MUIRCT может получать направление от переключателей командной строки и / или из файла конфигурации ресурсов, указанного с помощью переключателя -q.
muirct [-h | -?] [-C файл_контрольной суммы] [-b langid]]
[-g langid] [-q файл конфигурации ресурсов ] [-v уровень] [-x langid]
[-e выходной_файл] [-z выходной_файл] [-f] [-d MUI-файл] [-m версия_файла]
source_filename [language_neutral_filename] [mui_filename]
Переключатели и аргументы
-h | -? | Показывает экран справки. |
-c | Задает входной файл контрольной суммы, из которого нужно извлечь или вычислить контрольную сумму ресурса. Checksum_file должен быть двоичным файлом Win32, содержащим локализуемые ресурсы. Если файл_контрольной суммы содержит ресурсы для более чем одного языка, необходимо использовать переключатель -b, чтобы указать, какой из них следует использовать, в противном случае MUIRCT завершится ошибкой. |
-б | Задает язык, который будет использоваться, когда файл контрольной суммы, указанный с помощью -c, содержит ресурсы на нескольких языках.Этот ключ можно использовать только вместе с ключом -c. Идентификатор языка может быть в десятичном или шестнадцатеричном формате. MUIRCT завершается ошибкой, если файл контрольной суммы содержит ресурсы на нескольких языках, а параметр -b не указан или если язык, указанный параметром -b, не может быть найден в файле контрольной суммы. |
-г | Задает идентификатор языка, который будет включен в качестве окончательного резервного языка в раздел данных конфигурации ресурсов файла LN.Если загрузчику ресурсов не удается загрузить запрошенный .mui-файл из языков пользовательского интерфейса, предпочитаемых потоком, он использует последний резервный язык в качестве последней попытки. Значение LangID может быть указано в десятичном или шестнадцатеричном формате. Например, английский (США) можно указать с помощью -g 0x409 или -g 1033. |
-q | Указывает, что исходный_файл должен быть разделен на output_LN_file и output_MUI_file в соответствии с макетом файла rc_config. Файл rc_config — это файл в формате XML, который указывает, какие ресурсы будут извлечены в файл.mui, который останется в файле LN. Rc_config может определять распределение типов ресурсов и отдельных именованных элементов между output_LN_file и output_MUI_file. Исходный_файл должен быть двоичным файлом Win32, который содержит ресурсы на одном языке, в противном случае MUIRCT завершится ошибкой. MUIRCT не разделяет файл, если он не зависит от языка, что указывается наличием в файле только значения идентификатора языка 0. Output_LN_file и output_mui_file — это имена нейтрального языка и файла .mui, на который разбивается исходный_файл.Эти имена файлов необязательны. Если они не указаны, MUIRCT добавляет расширения .ln и .mui в исходный_файл. Обычно перед развертыванием файла следует удалить расширение «.ln». MUIRCT связывает output_LN_file и output_MUI_file, вычисляя контрольную сумму на основе имени исходного_файла и версии файла и вставляя результат в раздел конфигурации ресурсов каждого выходного файла. При использовании вместе с переключателем -c переключатель -q имеет приоритет. Если файл rc_config, поставляемый с ключом -q, содержит контрольную сумму, MUIRCT игнорирует ключ -c и вставляет значение контрольной суммы из значения, файла rc_config в LN и.mui файлы. Если значение контрольной суммы не найдено в rc_config, MUIRCT вычисляет контрольную сумму ресурса на основе поведения ключа -c. |
-v | Задает уровень подробности ведения журнала. Укажите 1, чтобы распечатать все основные сообщения об ошибках и результаты работы. Укажите 2, чтобы также включить информацию о ресурсе (тип, имя, идентификатор языка), включенную в файл .mui и файл LN. По умолчанию -v 1 |
-х | Задает идентификатор языка, которым MUIRCT помечает все типы ресурсов, добавленные в раздел ресурсов файла.mui файл. Значение LangID может быть указано в десятичном или шестнадцатеричном формате. Например, английский (США) можно указать как -x 0x409 или -x 1033. |
-e | Извлекает контрольную сумму ресурса, содержащуюся в файле контрольной суммы, предоставленном с ключом -c, и вставляет ее в указанный выходной_файл. Когда указан -e, MUIRCT игнорирует все ключи, кроме ключа -c. В этом случае файл контрольной суммы должен быть двоичным файлом Win32, который содержит раздел данных конфигурации ресурса со значением контрольной суммы.Файл output_file должен быть существующим файлом LN или файлом .mui. |
-z | Вычисляет и вставляет данные контрольной суммы ресурсов в указанный выходной файл. MUIRCT основывает расчет контрольной суммы на вводе, предоставленном с помощью ключа -c и необязательного ключа -b. Если вы укажете выходной файл для ключа -z, который не существует, MUIRCT завершится с ошибкой. Пример: вычисляет контрольную сумму на основе локализуемых ресурсов в Notepad.exe и вставляет контрольную сумму в выходной файл Notepad2.исполняемый файл. muirct -c notepad.exe -q myprog.rcconfig -z notepad2.exe |
-f | Позволяет создать файл .mui, в котором ресурс версии является единственным локализуемым ресурсом. По умолчанию MUIRCT не позволяет этого. |
-d | Находит и отображает данные конфигурации встроенных ресурсов в исходном файле. Когда вы указываете этот переключатель, MUIRCT игнорирует все другие параметры командной строки. |
-м | Указывает номер версии, который будет использоваться при вычислении контрольной суммы для связывания output_LN_file и output_MUI_file. |
имя_источника | Имя локализованного двоичного исходного файла; подстановочные знаки использовать нельзя. Этот файл может содержать ресурсы только на одном языке. Если в файле есть ресурсы на нескольких языках, MUIRCT завершится ошибкой, если не используется переключатель -b. Если файл содержит ресурсы с языковыми идентификаторами, имеющими только значение 0, MUIRCT не разделяет файл, потому что идентификатор языка 0 указывает на нейтральный язык. Для ключа -d имя_источника — это либо файл LN, либо файл ресурсов для конкретного языка, для которого MUIRCT должен отображать данные конфигурации ресурсов. |
language_neutral_filename | Необязательно. Имя файла LN. Если вы не укажете имя этого файла, MUIRCT добавит второе расширение «.ln» к имени исходного файла, чтобы использовать его в качестве независимого от языка имени файла. Обычно перед развертыванием файла следует удалить расширение «.ln».
|
mui_filename | Необязательно.Имя файла ресурсов для конкретного языка. Если вы не указываете имя, MUIRCT добавляет второе расширение «.mui» к имени исходного файла для использования в качестве имени файла. Обычно MUIRCT создает файл ресурсов для конкретного языка. Однако он не создает файл ресурсов, если существует одно из следующих условий:
|
Языковой вывод MUIRCT
MUIRCT выбирает значение атрибута UltimateFallbackLanguage для вставки в данные конфигурации ресурса файла LN в следующем порядке, от наивысшего приоритета к низшему:
- Атрибут «UltimateFallbackLanguage» в файле конфигурации исходного ресурса, если он передан в качестве входных данных.
- Язык, указанный с помощью переключателя -g.
- Язык входного файла.
MUIRCT выбирает значение атрибута language для вставки в данные конфигурации ресурса файла .mui в следующем порядке:
- Атрибут «язык» в файле конфигурации исходного ресурса, если он передан в качестве входных данных.
- Язык, указанный переключателем -x (принудительно).
- Язык входного файла.
MUIRCT Обработка контрольной суммы
Операционная система обычно вычисляет контрольную сумму для ресурсов конкретного языка в файле, если вы не укажете контрольную сумму в файле конфигурации ресурсов.Пока контрольная сумма одинакова для файла LN и всех связанных с ним файлов ресурсов, зависящих от языка, а атрибут языка в конфигурации ресурса в LN и зависит от языка, загрузчик ресурсов может успешно загрузить ресурсы.
MUIRCT поддерживает несколько методов для размещения соответствующих контрольных сумм в данных конфигурации ресурса:
- Создайте исполняемый файл для каждого языка, содержащий код и ресурсы. После этого используйте MUIRCT, чтобы разделить каждый из этих файлов на файл LN и файл ресурсов для конкретного языка.MUIRCT запускается несколько раз, по одному разу для создания файла ресурсов для каждого языка. Вы можете выполнить сборку следующими способами:
- Используйте переключатель -q, чтобы указать значение контрольной суммы в файле конфигурации ресурсов. MUIRCT помещает это значение во все создаваемые файлы LN и файлы ресурсов для конкретных языков. Вам необходимо принять стратегию выбора этого значения, как описано далее в этом разделе.
- Используйте переключатель -c (и, необязательно, переключатель -b), чтобы выбрать один язык, имеющий ресурсы, из которых MUIRCT извлекает контрольную сумму.
- Используйте переключатель -z, чтобы выбрать один язык, имеющий ресурсы, из которых MUIRCT всегда извлекает контрольную сумму. Примените эту контрольную сумму после того, как файлы были построены другими методами.
- Создайте исполняемый файл, содержащий как код, так и ресурсы для одного языка. После этого используйте MUIRCT для разделения ресурсов между файлом LN и файлом ресурсов для конкретного языка. Наконец, используйте инструмент двоичной локализации, чтобы изменить полученный файл ресурсов для каждого языка.
Наиболее распространенным соглашением для обработки контрольной суммы является основание контрольной суммы на английских (США) ресурсах. Вы можете принять другое соглашение, если оно согласовано для каждого файла LN. Например, для предприятия по разработке программного обеспечения вполне приемлемо основывать свои контрольные суммы в программном обеспечении, которое оно строит на французских (Франция) ресурсах, а не на английских (США) ресурсах, если все приложения имеют французские (Франция) ресурсы, на которых для расчета контрольных сумм.Также допустимо использовать файл конфигурации ресурсов для назначения произвольного шестнадцатеричного значения до 16 шестнадцатеричных цифр в качестве контрольной суммы. Эта последняя стратегия препятствует эффективному использованию ключей -z, -c и -b в MUIRCT. Это требует принятия метода, использующего GuidGen или какой-либо другой инструмент для генерации значений контрольной суммы. Эта стратегия также требует, чтобы вы установили политику для определения, когда изменять значение при добавлении новых локализуемых ресурсов.
Чтобы применить английскую (США) контрольную сумму ко всем файлам, вы можете использовать любой из методов обработки контрольной суммы, описанных выше.Например, вы можете сгенерировать файл LN и файл ресурсов для конкретного языка для английского языка (США), а затем использовать переключатель MUIRCT -d для получения результирующей контрольной суммы. Вы можете скопировать эту контрольную сумму в свой файл конфигурации ресурсов и использовать переключатель -q с MUIRCT, чтобы применить контрольную сумму ко всем другим файлам.
Использование файла конфигурации ресурсов с MUIRCT
Вы можете указать данные конфигурации ресурсов при использовании MUIRCT. Независимо от того, явно ли вы предоставили файл конфигурации ресурсов, каждый файл ресурсов для конкретного языка имеет данные конфигурации ресурсов, как и любой файл LN со связанным файлом ресурсов.Например:
- Если вы используете переключатель -q для указания файла конфигурации ресурсов, но в исходном файле ввода нет локализуемых ресурсов, файл ресурсов для конкретного языка не создается, а итоговый файл LN не содержит данных конфигурации ресурсов. Кроме того, если исходный входной файл имеет многоязычные ресурсы, MUIRCT не разделит файл.
Примечание
В настоящее время поведение MUIRCT несовместимо, например, когда элемент нейтрального ресурса файла конфигурации ресурса не содержит элементов типа ресурса, а элемент localizedResources содержит строки и меню.В таком случае MUIRCT разделяет ресурсы следующим образом:
- Все ресурсы в исходном двоичном файле (включая строки и меню), а также ресурсы многоязыкового интерфейса пользователя помещаются в файл LN.
- Строки, меню и ресурсы MUI помещаются в соответствующий файл ресурсов для конкретного языка.
Примеры использования MUIRCT
Примеры стандартного использования
muirct -q mui.MMF bar.exe barnew.exe barnew.exe.mui
muirct -d myprog.exe.mui
Пример вывода файла LN с использованием ключа -d
Вот пример вывода данных конфигурации ресурса из файла LN, Shell32.dll, с использованием ключа -d с MUIRCT:
Подпись - fecdfecd
Длина - 148
Версия конфигурации RC - 10000
Тип файла - 11
SystemAttributes - 100
Местоположение UltimateFallback - внешнее
Контрольная сумма службы - 14f44a8d86bef14af26d9a885964c935
Контрольная сумма - f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes - AVI FTR ORDERSTREAM TYPELIB UIFILE XML MUI
MainIDTypes - 1 2 3 12 14 16 24
MuiNameTypes - MUI
Типы MuiID - 2 3 4 5 6 9 14 16
UltimateFallbackLanguage - en-US
Пример вывода файла ресурсов для конкретного языка с использованием ключа -d
Вот пример выходных данных конфигурации ресурса из.mui, Shell32.dll.mui, используя переключатель -d для MUIRCT:
Подпись - fecdfecd
Длина - c8
Версия конфигурации RC - 10000
Тип файла - 12
SystemAttributes - 100
Контрольная сумма службы - 14f44a8d86bef14af26d9a885964c935
Контрольная сумма - f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes - MUI
MainIDTypes - 2 3 4 5 6 9 14 16
Язык - en-US
Утилита компилятора RC
RC-компилятор (RC.exe) — это утилита командной строки для компиляции файла сценария определения ресурса (с расширением .rc) в файлы ресурсов (с расширением .res). Компилятор RC включен в Windows SDK. В этом документе объясняется только использование RC-компилятора с возможностями загрузчика ресурсов, связанными с MUI. Для получения полной информации о компиляторе см. О файлах ресурсов.
RC Compiler позволяет создавать из единого набора источников файл LN и отдельный файл ресурсов для конкретного языка. Что касается MUIRCT, файлы связаны данными конфигурации ресурсов.
Синтаксис компилятора RC, используемый для ресурсов MUI
Переключатели
RC Compiler подробно описаны в разделе Использование RC. В этом разделе определяются только переключатели, используемые для создания ресурсов MUI. Помните, что в каждом переключателе регистр не учитывается. Предполагается, что типы ресурсов не зависят от языка, если не указано иное.
rc [-h | -?] -Fm имя_муи_ресурса [-q rc_config_file_name] [-g langid] [-g1] [-g2 version]
Переключатели и аргументы
-h | -? | Показывает экран справки. |
-fm | Использует указанный файл ресурсов для языковых ресурсов. Обычно компилятор ресурсов создает файл ресурсов для конкретного языка. Однако он не создает файл, если существует одно из следующих условий:
|
-q | Использует указанный файл конфигурации ресурсов для получения типов ресурсов, которые необходимо разместить в файле ресурсов для конкретного языка и в файле LN. Для получения дополнительной информации см. Подготовка файла конфигурации ресурса.В качестве альтернативы этому переключателю вы можете использовать переключатели -j и -k, но предпочтительно использовать файл конфигурации ресурсов. Используя переключатель -q с файлом конфигурации ресурсов, вы можете реализовать разбиение на основе элементов и предоставить атрибуты, которые в конечном итоге будут иметь двоичную конфигурацию ресурса в LN и файле ресурсов для конкретного языка. Это разделение невозможно с помощью переключателей -j и -k.
|
-г | Задает окончательный идентификатор резервного языка в шестнадцатеричном формате. |
-g1 | Создает файл .res многоязыкового интерфейса пользователя, даже если ресурс VERSION является единственным локализуемым содержимым. По умолчанию RC Compiler не создает файл.res файл, если ВЕРСИЯ — единственный локализуемый ресурс. |
-g2 | Задает номер пользовательской версии для использования при вычислении контрольной суммы. |
mui_res_name | Файл ресурсов для языковых ресурсов. |
rc_config_file_name | Файл конфигурации ресурса. |
лангид | Идентификатор языка. |
версия | Пользовательский номер версии в таком формате, как «6.2.0.0 «. |
Пример использования компилятора RC для создания ресурсов MUI
Чтобы проиллюстрировать работу RC-компилятора с ресурсами MUI, давайте рассмотрим следующую командную строку для файла ресурсов Myfile.rc:
rc -fm myfile_res.res -q myfile.rcconfig myfile.rc
Эта командная строка заставляет компилятор RC выполнить следующие действия:
- Создайте зависящий от языка файл ресурсов Myfile_res.res и файл ресурсов, не зависящий от языка, для которого по умолчанию используется Myfile.res на основе имени файла .rc.
- Добавьте типы ресурсов 2 (элемент 5 6 7 8 9 10 11 12), 4, 5, 6, 9, 11, 16, 23, 240, 1024 MY_TYPE в файл .res для конкретного языка, если они находятся в формате. rc файл.
- Добавьте тип ресурса 16 вместе с любыми другими типами ресурсов, описанными в файле ресурсов, в не зависящий от языка файл .res и файл .res для конкретного языка. Обратите внимание, что в этом примере тип ресурса 16 добавляется в двух местах.
- Выберите значение атрибута UltimateFallbackLanguage для вставки в данные конфигурации файлового ресурса LN на основе следующих критериев, упорядоченных от наивысшего приоритета к низшему:
- Атрибут UltimateFallbackLanguage в файле конфигурации ресурса, если он передан в качестве входных данных.
- Значение атрибута языка для вставки в данные конфигурации ресурса на основе языкового порядка RC-компилятора (независимый от языка и зависящий от языка язык файла ресурсов). Необходимо учитывать язык в файле .rc, языковое значение переключателя -gl и идентификатор 0x0409 для английского языка (США).
Примечания
Если вы включили какой-либо тип ресурса ICON (3), DIALOG (5), STRING (6) или VERSION (16) в элемент нейтральныйResources, то вы должны продублировать эту запись в элементе localizedResources в файле конфигурации ресурса.
Ссылка на многоязычный пользовательский интерфейс
Управление ресурсами MUI
Локализация ресурсов и создание приложения
.