Панельное
софтостроительшво
р р .
Иван ГАВРИЛЮК
Продолжение, начало см. в Ne 44, 47, 51, 0 1 -0 2 (319, 322, 326, 3 2 8 -3 2 9 )
Часть 4
Ресурсы. Язык RESOURCE SCRIPT. Использование Visual C + + улн
разработки приложеняб и редактирования ресурсов.
Ф
ормат исполняемого модуля Windows-программы слож-
нее, чем программы под DOS. Кроме сегментов ко-
до, данных и стека в исполняемом модуле (ехе или dll,
который мы рассмотрим позже) могут находиться спе-
циальные донные — ресурсы.
Приложение может хранить внутри себя акселераторы
(таблицы быстрого вызова команд с помощью клавиатуры),
битовые изображения в формате bm p, курсоры, диалоговые
панели, htm l-файпы, пиктограммы, меню, таблицы текстовых
строк, инструментальные понели, таблицы версий. Также про-
граммист может определить и работать со своим типом ре-
сурсов. Преимуществом ресурсов является то, что их можно
редактировать и без перекомпиляции исполняемого модуля,
просто открыв их в редакторе ресурсов, например, всеми
известным eXeScope, или встроенным редактором ресурсов
Visual C ++. Например, можно вручную перевести приложе-
ние на другой язык, если оно хранит свои языкозависимые
элементы интерфейса в ресурсах. Еще одним преимущест-
вом ресурсов является то, что их можно загружать по тре-
бованию. То есть те части, которые в данный момент не ис-
пользуются программой, спокойно отдыхают но диске, не за-
нимая оперативной памяти.
Поэтому и компилирование программы, использующей ре-
сурсы, немного отличается от не использующих их. Процесс
компиляции показан на рис. 1.
Ш Рис.1
Все файлы исходных кодов после обработки их компиля-
тором преобразовываются в объектные файлы (*.оbj), далее
с помощью редоктора связей все объектные модули и фай-
лы библиотек (*.lib) компонуются в единый исполняемый мо-
дуль (ехе или d llj, при этом они могут использовать файл оп-
ределения модуля (*.def), который часто используется при
разработке cW-модулей.
На этом компиляция программы, не использующей ресур-
сы, заканчивается. Все наши предыдущие примеры компили-
ровались именно так, прогромма c l автоматизирует этот
процесс. Если программа использует ресурсы, нужно выпол-
нить еще несколько шагов. Ресурсы подготавливаются в спе-
циальном файле с расширением *.гс, который является обыч-
ным текстовым файлом описания ресурсов.
Для этого существует специальный мини-язык RESOURCE
SCRIPT. Фойл описания ресурсов компилируется с помощью
компилятора ресурсов rc .e x e в законченный вид в файл с
расширением *.res. Зопустив c l.e x e , мы объединяем испол-
няемый модуль с откомпилированными ресурсами и получа-
ем окончательный вариант исполняемого модуля, который
теперь готов к использованию.
Я покажу, как создавать приложения, использующие ре-
сурсы с нуля, т.е. не используя никаких сред разработки. За-
тем мы рассмотрим более удобный и быстрый способ соз-
дания и редактирования ресурсов в среде разработки Visu-
al C++.
Создадим простое приложение, сохраняющее в ресурсах
несколько строк, загружающее их из ресурсов и выводящее
на экран.
Формат описания таблицы строк на RESOURCE SCRIPT:
STRINGTABLE [параметры_загрузки] [тип_памяти]
BEGIN
STRIP, [строка]
END
В качестве парам етра загрузки можно указать одно из
двух значений (табл. 1).
I
ТАБЛИЦА 1
PRELOAD
Ресурс загружается сразу после загрузки приложения
LOADONCALL
РесУРс загружается при первом обращении к нему.
Этот параметр используется па умолчанию.
Тип памяти определяет способ размещения ресурса в па-
мяти и может принимать одно из следующих трех значений
(табл. 2).
«
Т А Б Л И Ц А 2
FIXED
Ресурс после загрузки будет находиться по фиксированному адресу
MOVEABLE
Ресурс может перемещаться W indow s при необходимости
дефрагментирования памяти
При надобности W indow s м ожет освободить память, занимаемую
DISCARDABLE
ресурсом,а затем.если приложению он снова понадобится,
динамически загрузит его.
Stringtable — это идентификатор типа ресурса, в на-
шем случае — строки. Операторные скобки begin - end оп-
ределяют границы описывоемого ресурсо. strid — это уни-
кальный номер строки, строка — собственно строка, заклю-
ченная в двойные кавычки.
Напишем для примера приложение, использующее таб-
лицу текстовых строк, хронящихся в ресурсах. Создайте тек-
стовый файл, назовите его, например,
str.rc:
{ [ in c lu d e " s t r . h "
STRINGTABLE LOADONCALL DISCARDABLE
BEGIN
IDS_STRING1, "Строка из ресурсов"
IDS_STRING2, "Еще одна строка"
3 , "И еще одна :)"
END
константы ids_.
.. для удобства определены в отдельном фай-
ле s tr.h :
idefine IDS STRING1 1
10/337
07
марта- U марта
2005
предыдущая страница 38 Мой Компьютер 2005 10 читать онлайн следующая страница 40 Мой Компьютер 2005 10 читать онлайн Домой Выключить/включить текст