Форматы файлов ресурсов

В этом разделе описывается формат двоичного файла ресурсов, создаваемого компилятором ресурсов на основе содержимого файла определения ресурса. Этот файл обычно имеет расширение RES. Компоновщик переформатирует RES-файл в файл объекта ресурсов, а затем связывает его с исполняемым файлом приложения.

Двоичный файл ресурсов состоит из нескольких объединенных записей ресурсов. Каждая запись состоит из заголовка ресурса и данных для этого ресурса. Заголовок ресурса выравнивается по DWORD в файле и состоит из следующих элементов:

  • DWORD, содержащий размер заголовка ресурса.
  • DWORD, содержащий размер данных ресурса.
  • Тип ресурса
  • имя ресурса.
  • Дополнительные сведения о ресурсе

Структура RESOURCEHEADER описывает формат этого заголовка. Данные ресурса следуют за заголовком ресурса и относятся к каждому типу ресурса. Некоторые ресурсы также используют структуру заголовка группы для конкретных ресурсов для предоставления сведений о группе ресурсов.

Ресурсы таблицы ускорителей

Таблица ускорителей — это одна запись ресурса в файле ресурсов. У него нет заголовка группы. Структура ACCELTABLEENTRY описывает каждую запись в таблице ускорителя. Допускается использование нескольких таблиц ускорителей.

Ресурсы курсора и значка

Система обрабатывает каждый значок и курсор как один файл. Однако они хранятся в RES-файлах и исполняемых файлах в виде группы ресурсов значков RT_GROUP_ICON или RT_GROUP_CURSOR группы ресурсов курсора. Форматы файлов ресурсов значков и курсоров аналогичны. В RES-файле заголовок группы ресурсов следует за всеми отдельными значками или компонентами группы курсоров.

Заголовок группы для ресурсов значка и курсора состоит из структуры NEWHEADER и одной или нескольких структур RESDIR . Для каждого значка или курсора существует одна структура RESDIR . Заголовок группы содержит сведения, необходимые приложению для выбора правильного значка или курсора для отображения. Заголовок группы и данные, повторяющиеся для каждого значка или курсора в группе, имеют фиксированную длину. Это позволяет приложению получать случайный доступ к информации.

Формат каждого значка RT_ICON или компонента ресурса RT_CURSOR курсора очень похож на формат файла .ico/.cur. Каждое изображение хранится в структуре BITMAPINFO , за которой следуют независимые от устройства цветом битовые изображения (DIB) маски XOR значка. Монохромные биты DIB маски AND соответствуют цветным битам DIB. Существенное различие между курсорами и значками заключается в том, что курсоры имеют структуру LOCALHEADER с хот-спотом, вставленным перед данными растрового изображения, а значки — нет.

Так как windows Vista RT_ICON значок или RT_CURSOR ресурс курсора может содержать данные изображения, сжатые в формате PNG.

Ресурсы диалогового окна

Диалоговое окно также является одной записью ресурса в файле ресурсов. Он состоит из одной структуры заголовка диалогового окна DLGTEMPLATE и одной структуры DLGITEMTEMPLATE для каждого элемента управления в диалоговом окне. Структуры DLGTEMPLATEEX и DLGITEMTEMPLATEEX описывают формат расширенных ресурсов диалогового окна.

Ресурсы шрифтов

Шрифты хранятся в файле ресурсов в виде группы ресурсов. Отдельные шрифты составляют группу шрифтов. Инструкция определения ресурса инструкции FONT в . Rc-файл определяет каждый шрифт. Каждый отдельный шрифт в ресурсе состоит из полного содержимого связанного FNT-файла. Структура FONTGROUPHDR соответствует всем отдельным компонентам шрифта в RES-файле.

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

Ресурс меню состоит из структуры MENUHEADER, за которой следует одна или несколько структур NORMALMENUITEM или POPUPMENUITEM, по одной для каждого пункта меню в шаблоне меню. Структуры MENUEX_TEMPLATE_HEADER и MENUEX_TEMPLATE_ITEM описывают формат расширенных ресурсов меню.

Ресурсы таблицы сообщений

Таблица сообщений — это ресурс, содержащий форматированный текст для отображения в виде сообщения об ошибке или в окне сообщения. Структура main в ресурсе таблицы сообщений — это структура MESSAGE_RESOURCE_DATA.

Ресурсы версий

Структура main в ресурсе версии — это структура VS_FIXEDFILEINFO. Дополнительные структуры включают структуру VarFileInfo для хранения языковых данных и StringFileInfo для определяемых пользователем строковых сведений. Все строки в ресурсе версии имеют формат Юникод. Каждый блок информации выравнивается по границе DWORD .