Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
System programming / Конспект лекций / Лекция 7 Ресурсы часть1.doc
Скачиваний:
48
Добавлен:
08.05.2015
Размер:
79.87 Кб
Скачать

Компиляция ресурсов

При использовании современных средств программирования, таких как Microsoft Visual C++, создание и дальнейшее использование ресурсов в значительной мере автоматизировано. Программисту предоставляется возможность визуально добавлять и редактировать все типы ресурсов.

Однако, вначале, рассмотрим каким образом, традиционно используются файлы ресурсов. При создании программы ресурсы определяются в отдельном текстовом файле описания ресурсов (resource script), который представляет собой ASCII-файл с расширением *.RC. Файл описания ресурсов может содержать представление ресурсов в ASCII-кодах, а также может ссылаться и на другие файлы (ASCII или би­нарные файлы), в которых содержатся остальные ресурсы. С помощью компилятора ресурсов (файл RC.EXE) файл описания ресурсов компилиру­ется и становится бинарным файлом с расширением *.RES. Задав в команд­ной строке LINK файл с расширением *.RES, вы можете заставить компо­новщик включить скомпилированный файл описания - ресурсов в файл с расширением *.ЕХЕ программы вместе с обычными кодом и данными про­граммы из файлов с расширением *.OBJ и *.LIB.

В командной строке можно компилировать файл описания ресурсов с рас­ширением *.RC, превращая его, таким образом, в бинарный файл с расши­рением .RES, путем выполнения команды:

RC -r -DWIN32 filename.RC

Эта команда создает бинарный файл с именем filename.RES. Большинство программистов, пишущих программы для Windows, дают файлу описания ресурсов то же имя, что и самой программе.

В приведенной выше командной строке параметр -r заставляет компилятор ресурсов создать файл с расширением *.RES и сохранить его на диске. Параметр -DWIN32 определяет константу (WIN32), которая показывает, что скомпилированный файл описания ресурсов должен храниться в 32-разрядном формате, предназна­ченном для Windows 95 и Windows NT.

Компо­новщик, поставляемый с Microsoft Visual C++ для Windows 95 выполняет работу по включению файла ресурсов в *.ЕХЕ файл. Просто укажите файл с расширением .RES рядом с файлом (или файлами) с расширением .OBJ в командной строке LINK.

Значки и курсоры

Для использования в вашей программе значков (иконок) и курсоров необходимо выполнить три этапа:

  1. Создание иконки и ее описания.

  2. Загрузка иконки в программу во время ее выполнения.

  3. Выполнение операций (например, вывода на экран) с иконками.

Создание иконок

Программу-инструмент, которую вы используете для создания значков, курсоров и битовых образов часто называют редактором изображений (image editor), и он является одной из наиболее важных утилит разработчика в любой интегрированной среде разработки программ для Windows. Как значки, так и курсоры являются разновидностью битовых образов.

Битовый образ (bitmap) — это битовый массив, где один или более битов соответствуют каждому пикселю экрана. В монохромном битовом образе для каждого пикселя требуется один бит. (В простейшем случае 1 соответст­вует белому цвету, а 0 — черному. Тем не менее, битовые образы часто используются не только для создания простых рисунков, но и в логических операциях.) В цветном битовом образе для отображения цвета каждому пикселю соответствует несколько битов. Редакторы изображений обычно поддерживают создание монохромных и 16-цветных битовых образов. В 16-цветном битовом образе для каждого пикселя требуется 4 бита.

В Windows 95 имеется два размера значков — стандартный и маленький. На дисплеях VGA стандартный значок имеет размер 32 пикселя в ширину и 32 пикселя в высоту, а площадь маленького значка равна 16 квадратных пиксе­лей. Маленький значок используется в левой части строки заголовка при­ложения для вызова системного меню, в панели задач системы в нижней части экрана, а также в списках программ меню Start. Значки, появляющие­ся на рабочем столе, имеют стандартный размер. В программе Windows Explorer и меню Start пользователь может произвольно выбирать стандарт­ный или маленький значок.

В программе можно получить горизонтальный (X) и вертикальный (Y) размеры значков и курсоров, используя функцию GetSystemMetrics с пара­метрами SM_CXICON и SM_CYICON (для стандартного значка), SM_CXSMICON и SM_CYSMICON (для маленького значка) и SM_CXCURSOR и SM_CYCURSOR для курсоров мыши. Для большинства дисплеев размеры стандартных курсоров и значков одинаковы.

Редактор изображений, включенный в состав программы Developer Studio, может создавать файл с расширением .ICO, содержащий один из трех раз­личных образов значка:

• Стандартный: 16-цветный площадью 32 квадратных пикселя

• Монохромный: черно-белый площадью 32 квадратных пикселя

• Маленький: 16-цветный площадью 16 квадратных пикселей

Вам нет необходимости создавать значки во всех трех фор­матах. Сама Windows может создать из стандартного значка — маленький, просто исключив каждый второй столбец и строку. Для монохромных дис­плеев (которые сейчас почти полностью устарели) Windows может прибли­женно изобразить значок, используя различные оттенки серого цвета.

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

При выводе значка на экран, Windows сначала использует поразрядную опе­рацию AND экрана и первого битового образа. Пиксели экрана, соответст­вующие нулевым битам первого битового образа становятся нулевыми, т. е. черными. Пиксели экрана, соответствующие единичным битам остаются без изменения. Эта логика отражена в следующей таблице:

Бит маски

Пиксели экрана

0 1

0

1

0 0

0 1

Далее, Windows выполняет поразрядную операцию исключающего OR изо­бражения битового образа и экрана. Во втором битовом образе оставляет пиксель на экране без изменений; 1 во втором битовом образе инвертирует пиксель экрана. Эта логика представлена в следующей таблице:

Бит изображения

Пиксели экрана

0 1

0

1

0 1

1 0

Используя нотацию языка С для этих операций, вывод на экран осуществ­ляется в соответствии со следующей формулой:

Display = (Display & Mask) /\ Image

Для 16-цветного значка маска битового образа — монохромна и формирует­ся указанным выше способом. Битовый образ изображения содержит 4 бита на пиксель для отображения 16 цветов. Все четыре бита устанавливаются в 1 для той области значка, в которой цвет фона инвертируется.