CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Borland C++ 3.0
Borland C++ 3.0
Глава 2. Основы работы с Пакетом разработчика ресурсов
-----------------------------------------------------------------
В данной главе дается обзор Пакета разработчика ресурсов и
ресурсов Windows. Она начинается с обсуждения того, что такое ре-
сурсы, и что представляет собой каждый тип ресурсов. Она охваты-
вает также использование файлов ресурсов различных типов в Пакете
разработчика ресурсов, и как эти файлы собираются вместе в про-
ект. В конце данной главы можно найти некоторые замечания о нача-
ле работы с Пакетом разработчика ресурсов.
Понятие ресурсов в Windows
-----------------------------------------------------------------
Ресурсы - это данные, определяющие некоторые видимые части
вашей программы Windows. Например, когда вы открываете диалоговое
окно и наживаете кнопку "мыши" для выполнения задачи, в которую
входит программа, вы взаимодействуете с ресурсами программы. Кро-
ме диалоговых блоков (окон) и программных "кнопок", другие типы
ресурсов, которые вы можете использовать в программе, включают в
себя пиктограммы, курсоры, битовые изображения, меню и клавиатур-
ные акселераторы (оперативные клавиши).
В прикладных программах Windows ресурсы обеспечивают содер-
жательный и согласованный интерфейс с пользователем, что
облегчает пользователю переход от одной программы Windows к дру-
гой.
Далее приведен пример ресурса - диалоговое окно, которое
позволяет пользователю осуществить некоторый выбор:
Описание специфических возможностей каждого из редакторов
ресурсов, входящих в состав Пакета разработчика ресурсов, вы може-
те найти в главах 4-9. Данная глава содержит обзор ресурсов и ти-
пов файлов, с которыми может работать Пакет разработчика ресурсов.
Здесь же объясняется как использовать указанные файлы в процессе
построения ресурсов для прикладных программ Windows.
Что такое ресурсы
-----------------------------------------------------------------
Можно считать, что ресурс - это файл с данными, который до-
писывается в конец исполняемого файла прикладной программы. Если
ресурс определен корректно, то соответствующие ресурсу данные мож-
но изменять не затрагивая кодов прикладной программы.
Прикладные программы Windows включают в свой состав опреде-
ленное количество графических элементов. В частности некоторая
прикладная программа может изменять форму графического курсора в
зависимости от режима работы и использовать для этой цели десять
различных изображений. Вместо того, чтобы включать данные, опреде-
ляющие форму курсора непосредственно в исходный текст программы,
их можно выделить в отдельный блок и хранить как ресурс, который
будет загружаться в память по мере необходимости. Преимущества
последнего подхода включают в себя:
----T-----------------------------------------------------------¬
¦ - ¦-----------------------Options-----------------------------¦
+---+-----------------------------------------------------------+
¦ ¦
¦ --Shape--------¬ --Colors------------------------------¬ ¦
¦ ¦ ¦ ¦ --¬ --¬ ¦ ¦
¦ ¦ O Square ¦ ¦ ¦X¦ Blue ¦ ¦ Red ¦ ¦
¦ ¦ ¦ ¦ L-- ---- L-- ¦ ¦
¦ ¦ 0 Circle ¦ ¦ --¬ --¬ ¦ ¦
¦ ¦ ¦ ¦ ¦X¦ Yellow ¦ ¦ White ¦ ¦
¦ ¦ O Triangle ¦ ¦ L-- L-- ¦ ¦
¦ ¦ ¦ L-------------------------------------- ¦
¦ L--------------- ¦
¦ ¦
¦ ----OK----- --Cancel--- ---Help---- ¦
¦ ¦
L----------------------------------------------------------------
Рис. 2.1 Типичное диалоговое окно
Все диалоговое окно и все управляющие элементы в нем (вклю-
чая командные кнопки, кнопки с независимой фиксацией (блоки про-
верки) и т. д. определяются в прикладной программе Windows как
ресурсы.
В общем случае ресурсы прикладной программы Windows отделя-
ются от кода программы, что позволяет вам вносить существенные
изменения в интерфейс с пользователем без необходимости открывать
файл, содержащий код программы.
Предположим, например, что вы работаете с бухгалтерской
прикладной программой Windows. Вы можете записать исходный код,
реализующий алгоритм вашей прикладной программы, в отдельной фай-
ле, и даже выполнить его компиляцию отдельной от ресурсов прог-
раммы. Чтобы изменить вывод программы, вы (или кто-то другой, от-
ветственный за интерфейс с пользователем) можете модифицировать
эти ресурсы и создать новые, не беспокоясь о их влиянии на соот-
ветствующие бухгалтерские алгоритмы.
Кроме того, поскольку различные прикладные программы исполь-
зуют один и тот же набор ресурсов, вам не потребуется изобретать
заново диалоговые окна, пиктограммы и специальные курсоры. Вместо
этого вы каждый раз можете использовать их повторно.
Типы ресурсов
-----------------------------------------------------------------
Пакет разработчика ресурсов поддерживает следующие ресурсы
Windows.
Диалоговые окна
-----------------------------------------------------------------
Диалоговое окно - это окно (обычно всплывающее) которое вы-
водит информацию пользователю и позволяет ему сделать выбор (нап-
ример, выбрать файлы для открытия, цвета дисплея, текст для поис-
ка и т. д.).
Примечание: О диалоговых окнах редактирования рассказы-
вается в Главе 4.
Диалоговое окно обычно включает в себя элементы управления,
такие как кнопки с зависимой фиксацией (селективные кнопки),
кнопки с независимой фиксацией (параметры), командные кнопки и т.
д. Пакет разработчика ресурсов облегчает помещение в диалоговое
окно любой комбинации управляющих элементов. Кроме того, Пакет
разработчика ресурсов позволяет вам проверить диалоговое окно и
отладить его поведение перед тем, как связать его с выполняемым
кодом.
Меню
-----------------------------------------------------------------
Прикладные программы Windows обычно включают в себя строку
меню, в которой перечисляются элементы, выбираемые пользователем.
В общем случае каждый элемент меню может выводить дополнительный
список элементов для выбора. Например, большинство программ
Windows включает в себя меню File (Файл), которое содержит коман-
ды меню для создания нового файла или открытия существующего.
--------------------------¬
¦--New--------------------¦ Новый файл
¦ Open... ¦ Открыть
¦ Save ¦ Сохранить
¦ Save as... ¦ Сохранить как...
+-------------------------+
¦ Print... ¦ Печать
¦ Page Setup... ¦ Установка страницы
¦ Printer Setup... ¦ Установка принтера
+-------------------------+
¦ Exit ¦ Выход
L--------------------------
Рис. 2.2 Типичное файловое меню
Пакет разработчика ресурсов облегчает создание меню, выводя
его по мере создания на экран. Добавляя или модифицируя элементы
меню, вы можете проверить его. Кроме того, Пакет разработчика ре-
сурсов выводит на экран представляющий меню текст, как если бы вы
использовали для создания меню редактор меню.
Акселераторы
-----------------------------------------------------------------
Акселераторы - это клавиатурные комбинации (или оперативные
клавиши), которые пользователь нажимает для выполнения задачи,
как прикладной программы. Например, программа Windows может вклю-
чить акселератор ShiftIns, которые пользователь нажимает для
вставки текста или графических изображений из буфера вырезанного
изображения в открытый программой файла.
--------------------------¬
¦ Undo Alt+Backspace ¦ Отмена
+-------------------------+
¦ Cut Shift+Del ¦ Забрать
¦ Copy Shift+Ins ¦ Скопировать
¦--Paste----------Cut+Ins-¦ Вставить
+-------------------------+
¦ Clear ¦ Очистка
¦ Delete ¦ Удаление
L--------------------------
Рис. 2.3 Меню открытия редактирования с акселераторами
В общем случае программы Windows используют для дублирования
функций меню акселераторы, позволяющие пользователю выбирать
функцию с помощью выбора команды меню или путем нажатия клавиш
акселератора. Однако, вы можете создать ресурсы акселератора, оп-
ределяющие новые функции, недоступные из меню основной программы.
Пакет разработчика ресурсов облегчает создание новых акселе-
раторов и редактирование существующих. Кроме того, пакет разра-
ботчика ресурсов выводит текст ресурса на экран при редактирова-
нии акселератора, и вы можете видеть, что происходит.
Таблицы строк
-----------------------------------------------------------------
Таблицы строк содержат текст (например, описания, подсказки
и сообщения об ошибках), которые выводит программа Windows. Пос-
кольку данные текстовые строки представляют собой ресурсы
Windows, отдельные от программы (вместо встроенных в программу
текстовых строк), вы или другие программисты можете транслировать
сообщения, выводимые программой, без необходимости внесения в
исходный текст программы изменений.
Битовые изображения
-----------------------------------------------------------------
Битовый массив (битовое изображение) - это графический образ
в программе. Сама система Windows использует большое количество
битовых изображений. Примером могут служить изображения, предс-
тавляющие различные элементы управления типичным окном (полосы
прокрутки, стрелки полосы прокрутки, управляющий символ меню и
символ минимизации). Каждый бит или группа бит в битовом массиве
представляет один элемент изображения в графическом образе.
Пример битового изображения представлен на следующем рисун-
ке. Это средство Paintbrush (кисть) из палитры графического ре-
дактора.
-----------------------------¬
¦----------------------------¦
¦----------------------------¦
¦-------------- П ----------¦
¦-------------- П ----------¦
¦-------------- П ----------¦
¦------------- ---------¦
¦----------- П -------¦
¦----------- П -------¦
¦------------ П --------¦
¦------------- П ---------¦
¦------------- п ----------¦
¦----------- п -----------¦
¦-------- -------------¦
¦----------------------------¦
¦----------------------------¦
L-----------------------------
Рис. 2.4 Битовый массив Paintbrush (увеличено)
Создавать битовые массивы можно с помощью графического ре-
дактора ресурсов, который позволяет вам настроить цвета, выбрать
различные изобразительные средства, наблюдая за двумя создаваемы-
ми битовыми массивами и т.д. Этот редактор используется также для
работы с другими графическими ресурсами - пиктограммами, курсора-
ми и шрифтами.
Примечание: О графическом редакторе рассказывается в
Главе 8.
Пиктограммы
-----------------------------------------------------------------
Пиктограммы - это небольшие битовые массивы (обычно 32х32
или 16х32 элемента изображения), используемые для представления
минимизированных окон. Пиктограммы можно создавать с помощью гра-
фического редактора (описанного в Главе 8).
Примечание: О том, как рисовать пиктограммы, рассказы-
вается в Главе 9.
Чтобы увидеть пример пиктограммы Windows, активизируйте
кнопку минимизации программы Пакета разработчика ресурсов, чтобы
сжать окно. (Кнопка минимизации - это символ направленной вниз
стрелки, расположенный в правой верхней части окна.) Как вы уви-
дите, Windows для представления минимизированного окна использует
пиктограмму Пакета разработчика ресурсов.
С демонстрационным файлом описания проекта RWPDEMO.RC пос-
тавляется следующая пиктограмма:
-----------------------------¬
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
¦----------------------------¦
L-----------------------------
Рис. 2.5 Пиктограмма RWPDEMO (увеличено)
Курсоры
-----------------------------------------------------------------
Курсор представляет собой небольшой битовый массив размером
32х32 элемента изображения, представляющий позицию "мыши" на эк-
ране. Программы Windows используют специальные курсоры для указа-
ния того, с каким типом задачи работает в данным момент пользова-
тель. Вы можете создать курсор с помощью графического редактора
(см. Главу 8).
Примечание: О графических курсорах рассказывается в
Главе 10.
Примеры специальных курсоров, которые выводятся при редакти-
ровании графического ресурса (типа курсора) вы можете увидеть в
графическом редакторе Пакета разработчика ресурсов. Каждый раз,
когда вы выбираете новое изобразительное средство и перемещаете
курсор к графическому образу, курсор принимает форму, представля-
ющую текущую функцию. Например, если вы активизируете в наборе
инструментальных средств графического редактора изобразительное
средство, представляющее собой "банку с краской", и переместите
курсор к графическому образу, курсор принимает форму банки с
краской.
Примечание: Курсор может быть прозрачным или инверти-
рованным, благодаря чему сквозь него видна фоновая область.
-----------------------------¬
¦----------------------------¦
¦----------- ------------¦
¦-------- -- -- ---------¦
¦------ ----- ----- -------¦
¦---- --------------- -----¦
¦--- ------------------- ----¦
¦-- --------------------- ---¦
¦- ------------- --¦
¦-- ----------(/_/------- ---¦
¦--- -------.--------- ----¦
¦----- -----+----- ------¦
¦-------- -- -- ---------¦
¦----------- ------------¦
¦----------------------------¦
L-----------------------------
Рис. 2.6 Пиктограмма RWPDEMO (cm. в оригинале)
Шрифты
-----------------------------------------------------------------
Шрифты в программах Windows используются для определения гар-
нитуры, размера и стиля текста. Например, отдельный символ, кото-
рый программа выводит на экран или на принтер, может быть
10-point Times Roman bold (гарнитура Times, 10 пунктов, латинс-
кий, жирный). В этом случае гарнитурой будет Times Roman, разме-
ром - 10 пунктов, а стилем - жирный (bold).
Другим использованием ресурсов шрифтов в программах Windows
является запись наборов битовых массивов, которые всегда исполь-
зуются вместе.
Вы можете использовать Пакет разработчика ресурсов для моди-
фикации способа вывода существующих шрифтов или создания новых.
Ресурсы, определенные пользователем, и ресурсные данные
-----------------------------------------------------------------
Ресурсы, определенные пользователем, и ресурсные данные (по
существу это тоже самое, что Пакет разработчика ресурсов) содер-
жат любые данные, которые вы хотите добавить к выполняемому фай-
лу. Например, если у вас имеется большой блок инициализированных
данных, доступных только по чтению (например, текстовый файл), вы
можете добавить выполняемый файл, как ресурс, определенный поль-
зователем.
Примечание: О редактировании ресурсов, определенных
пользователем, рассказывается в Главе 13.
Одной из общих причин добавления ресурсов определенных поль-
зователем, является то, что это способствует управлению памятью.
Многие прикладные программы Windows используют среднюю модель па-
мяти, в которой используется один сегмент данных. Если у вас име-
ется относительно большой объем данных, и вы хотите, чтобы данные
постоянно находились в памяти, вы можете сохранить данные как
пользовательский ресурс, определенный как отбрасываемые данные
(DISCARDABLE). При этом ресурс, определенный пользователем, будет
занимать память только тогда, когда программа его использует.
Два типа редакторов
-----------------------------------------------------------------
Пакет разработчика ресурсов предоставляет вам мощные, прос-
тые в использовании ориентированные на работы с графикой редакто-
ры, которые вы можете использовать для проектирования ресурсов.
Однако Пакет разработчика ресурсов дает вам также возможность ис-
пользовать для проектирования ресурсов текстовый редактор. Эта
возможность делает Пакет разработчика ресурсов гибким продуктом,
доступным работающим в Windows программистам на всех уровнях.
Примечание: Пакет разработчика ресурсов позволяет вам
также задавать внешний редактор, используемый для редакти-
рования файлов описания проектов, которые не нужно компили-
ровать при открытии. Подробности см. далее.
Например, если вы не имеете опыта программирования в
Windows, то можете быстро построить диалоговое окно, используемое
редактором диалогов. Создавать и перемещать элементы управления
здесь также просто, как нажатие кнопки "мыши" и "буксировка".
----T---------------------------------------------------T---T---¬
¦ - ¦-----------------------Options---------------------¦ v ¦ ^ ¦
+---+---------------------------------------------------+---+---+
¦= File Edit Resource Control Options Window Help ¦ ¦
+-----------------------------------------------------------+-T-+
¦--T--------------------------------------¬ --T-----------¬ ¦^¦
¦¦=¦ Options ¦ ¦=¦ Caption ¦ +-+
¦+-+--------------------------------------+ +-+-----------+ ¦-¦
¦¦--Shape------¬ --Colors---------------¬ ¦ +-T-----T-----+ ¦-¦
¦¦¦ ¦ ¦ --¬ --¬ ¦ ¦ ¦=¦Align¦Tools¦ ¦-¦
¦¦¦ O Square ¦ ¦ ¦X¦ Blue ¦ ¦ Red ¦ ¦ +-+-T-T-+-T-T-+ ¦-¦
¦¦¦ ¦ ¦ L-- ---- L-- ¦ ¦ ¦>¦<¦>¦<¦^¦С¦О¦ ¦-¦
¦¦¦ 0 Circle ¦ ¦ --¬ --¬ ¦ ¦ +-+-+-+-+-+-+-+ ¦-¦
¦¦¦ ¦ ¦ ¦X¦ Yellow ¦ ¦ White ¦ ¦ ¦v¦^¦v¦^¦+¦¦¦-¦ ¦-¦
¦¦¦ O Triangle¦ ¦ L-- L-- ¦ ¦ L-+-+-+-+-+-+-+ ¦-¦
¦¦¦ ¦ L----------------------- ¦ ¦G¦"¦x¦ ¦-¦
¦¦L------------- ¦ +-+-+-+ ¦-¦
¦¦ ¦ ¦1¦-¦¬¦ ¦-¦
¦¦ ¦ +-+-+-+ ¦-¦
¦¦ ---OK--- ---Cancel---- ----Help---- ¦ ¦T¦Г¦U¦ ¦-¦
¦¦ ¦ +-+-+-+ ¦-¦
¦L----------------------------------------- ¦ш¦:¦ ¦ ¦-¦
¦ +-+-+-+ ¦-¦
¦ ¦u¦ ¦ф¦ ¦-¦
¦ L-+-+-- +-+
¦ ¦v¦
+-T---------------------------------------------------------T-+-+
¦>¦---------------------------------------------------------¦<¦ ¦
+-+-----------------------T---------------------------------+-+-+
¦ Ready ¦ Modify ¦
L-------------------------+--------------------------------------
Рис. 2.7 Редактор диалогов (см. также в оригинале руководс-
тва)
По следующим причинам иногда желательно вместо редактора ре-
сурсов использовать внутренний редактор Пакета разработчика ре-
сурсов:
- Если вы имеете опыт программирования в Windows, иногда
предпочтительнее работать с записями ресурсов.
- Может оказаться, что некоторые вещи легче исправить с по-
мощью текстового редактора, в то время как крупные правки
легче выполнять с помощью редактора ресурсов.
- Иногда желательно использовать текстовый редактор, чтобы
использовать преимущества некоторых минимальных возможнос-
тей, не поддерживаемых редактором ресурсов, таких как ред-
ко используемые параметры или отдельные флаги.
Однако даже опытные программисты могут обнаружить, что ре-
дакторы ресурсов являются более гибким и мощным средством, кото-
рое допускает разнообразное использование при создании ресурсов.
Типы файлов ресурсов
-----------------------------------------------------------------
Файл, который вы создаете и редактируете с помощью Пакета
разработчика ресурсов, может иметь двоичный или текстовый формат.
Кроме того, Пакет разработчика ресурсов может генерировать файлы
в стандартном формате Windows, что означает, что вы можете ис-
пользовать файлы Пакета разработчика ресурсов с любой программой,
которая генерирует двоичный код из файлов записей ресурсов (нап-
ример, с компилятором ресурсов фирмы Microsoft).
Примечание: Не все файлы Пакета разработчика ресурсов
.RC будут совместимы с компилятором ресурсов. Компилируйте
эти файлы с формат .RES с помощью Пакета разработчика ре-
сурсов.
Файлы компилятора ресурсов
-----------------------------------------------------------------
Файл компилятора ресурсов (.RC) - это файл записей ресурсов
(текстовый файл), содержащий определения одного или более ресур-
сов. Этот файл может содержать ресурсы, определенные в форме за-
писей, и ссылки на другие содержащие ресурсы файлы.
Примечание: О командах записей рассказывается в опе-
ративном справочнике Help.
В общем случае вам следует основывать все ваши проекты Паке-
та разработчика ресурсов по крайней мере на одном файле .RC.
Файлы ресурсов
-----------------------------------------------------------------
Файл ресурсов (.RES) содержит один или более компилируемых
ресурсов.
Обычно при создании программы Windows все ресурсы прикладной
программы компилируются в одном файле ресурсов .RES, который за-
тем связывается с выполняемой программой при компоновке. Однако
при работе с Пакетом разработчика ресурсов, если вы не хотите
создавать файл ресурсов .RES, можно этого не делать, так как Па-
кет разработчика ресурсов может компилировать файлы ресурсов и
связывать их непосредственно с выполняемым файлом.
Выполняемые файлы и файлы динамически компонуемых библиотек
-----------------------------------------------------------------
Выполняемый файл .EXE или файл динамически компонуемой биб-
лиотеки DLL - это конечная цель определения всех ресурсов, опре-
деляемых с помощью Пакета разработчика ресурсов. Обычно файл .RC
компилируется в файл .RES, затем для связывания файла .RES с вы-
полняемым файлом или с файлом DLL используется компилятор. Чтобы
связать ресурсы непосредственно с файлом .EXE или .DLL, опуская
фазу компилятора RC, вы можете использовать Пакет разработчика
ресурсов.
Если вы хотите изменить ресурсы в компилируемом двоичном
файле (выполняемом файле, файле .DLL или файле .RES), то Пакет
разработчика ресурсов будет декомпилировать этот файл, чтобы вы
могли внести изменения, а затем сохранит ресурсы обратно в двоич-
ном файле.
Диалоговые файлы
-----------------------------------------------------------------
Диалоговый файл (.DLG) - это файл записей ресурсов (тексто-
вый файл), который обычно содержит описания одного или более диа-
логовых блоков. Эти ресурсы не обязательно должны быть диалоговы-
ми, это могут быть любые ресурсы, найденные в файле .RC.
Файлы битовых массивов
-----------------------------------------------------------------
Файлы битовых массивов (.BMP) содержит ресурс битового мас-
сива в двоичном формате.
Файлы пиктограмм
-----------------------------------------------------------------
Файлы пиктограмм (.ICO) содержат пиктограммы в двоичном фор-
мате.
Файлы курсоров
-----------------------------------------------------------------
Файлы курсоров (.BMP) содержат специальный курсор в двоич-
ном формате.
Файлы шрифтов
-----------------------------------------------------------------
Файлы шрифтов имеют две формы: двоичную и библиотечную.
- Двоичный файл шрифта (.FNT) содержит определение специаль-
ного шрифта в двоичном формате. Для разработки шрифта и
записи его в файл .FNT вы можете использовать графический
редактор Пакета разработчика ресурсов.
- Файл библиотеки шрифта (.FON) представляет собой динамичес-
ки компонуемую библиотеку ресурсов, которая содержит ката-
лог шрифта и один или более шрифтов. Вы можете создать
файлы .FON вне Пакета разработчика ресурсов. Однако после
создания файла .FON для модификации этого файла нужно ис-
пользовать Пакет разработчика ресурсов.
Примечание: Файлы .FON описываются далее.
Файлы идентификаторов
-----------------------------------------------------------------
Программы Windows используют для уникальной идентификации
каждого ресурса числа. Эти числа можно использовать в программе
для идентификации ресурсов, с которыми вы хотите работать. Однако
такая форма не слишком описательна. Для прикладных программ, на-
писанных на языке Си, для присваивания символьных определений
значениям-константам используются определения #define. В приклад-
ных программах, написанных на Паскале, используются определения
констант.
Примечание: Более подробно об использовании идентифи-
каторов при работе с Пакетом разработчика ресурсов расска-
зывается далее.
В данном руководстве термин "идентификатор" используется и
для определений #define и для констант.
С помощью идентификаторов вы можете создавать значащие имена
вместо малоосмысленных чисел. Например, хотя вы можете использо-
вать для уникальной идентификации меню число 100, идентификатор
вида FILEMENU является значительно более описательным.
Если вы пишете программу на языке Си, то можете записать оп-
ределения #define ресурса в файле заголовка (.H). В программе на
Паскале вы можете сохранить константы ресурсов в модуле (.PAS)
или в включаемом файле (.INC).
В данном руководстве используются все три вида файлов, кото-
рые обобщенно называются файлами идентификаторов.
Использование файлов заголовков языка Си
-----------------------------------------------------------------
Если вы пишете программу на языке Си, используйте определе-
ния #define и запишите их в файл заголовка. Типичный файл заго-
ловка показан в следующем примере:
/**********************************************************
* Определения для программы BCDEMO. *
**********************************************************/
#define LINE 1
#define ELLIPSE LINE + 1
#define RECTANGLE LINE + 2
#define MID_QUIT 100
#define MID_LINE 201
#define MID_ELLIPSE MID_LINE + 1
#define MID_RECTANGLE MID_LINE + 2
#define MID_THIN 301
#define MID_REGULAR MID_THIN + 1
#define MID_THICK MID_THIN + 2
Кроме #define вы можете записать здесь определения типов и
структур, код программы и комментарии. Пакет разработчика ресур-
сов игнорирует в файле заголовка все данные, за исключением опре-
делений #define и директив препроцессора.
Использование включаемых файлов и модулей Паскаля
-----------------------------------------------------------------
Если ваша программа написана на Паскале, вы можете использо-
вать константы и записывать их в файле модуля или включаемом
файле. С помощью констант вы можете записывать только комментарии
и директивы компилятора, а компилятор может работать только с
константами, определенными как нетипизованное целое значение и
выражения длинного целого типа.
(**********************************************************
* Определения констант для программы TDDEMO. *
***********************************************************)
unit TddemoConst;
interface
const
LINE = 1;
ELLIPSE = LINE + 1;
RECTANGLE = LINE + 2;
MID_QUIT = 100;
MID_LINE = 201;
MID_ELLIPSE = MID_LINE + 1;
MID_RECTANGLE = MID_LINE + 2;
MID_THIN = 301;
MID_REGULAR = MID_THIN + 1;
MID_THICK = MID_TRHIN + 2;
implementation
end.
Кроме комментариев и директив компилятора в секции interface
допускаются только определения констант. Секция implementation
должна быть пустой. За ключевым словом end может следовать все
что угодно, но Пакет разработчика ресурсов будет это игнориро-
вать.
Как показано в следующем примере, включаемый файл может со-
держать только описания констант, комментарии и директивы компи-
лятора:
(**********************************************************
* Определения констант для программы TDDEMO. *
***********************************************************)
const
LINE = 1;
ELLIPSE = LINE + 1;
RECTANGLE = LINE + 2;
MID_QUIT = 100;
MID_LINE = 201;
MID_ELLIPSE = MID_LINE + 1;
MID_RECTANGLE = MID_LINE + 2;
MID_THIN = 301;
MID_REGULAR = MID_THIN + 1;
MID_THICK = MID_TRHIN + 2;
Файлы .DRV
-----------------------------------------------------------------
Файл .DRV - это файл драйвера Windows (особый вид DLL).
Вы можете редактировать ресурсы в одном из этих файлов, как любую
библиотеку DLL.
Совместная работа этих файлов - файл проекта
-----------------------------------------------------------------
Пакет разработчика ресурсов облегчает отслеживание ресурсов
путем организации их в проект. В самых общих словах, проект
состоит из следующих типов файлов ресурсов (содержит по крайней
мере один из этих файлов):
- Файла записей ресурсов (RC или .DLG).
- Двоичного файла ресурсов (.RES).
- Двоичного файла курсоров (.CUR).
- Двоичного файла пиктограмм (.ICO).
- Двоичного файла битового массива (.BMP).
- Двоичного файла шрифта (.FMT).
- Двоичного библиотечного файла шрифта (.FON).
- Выполняемого файла (.EXE).
- Файла динамически компонуемой библиотеки (DLL).
- Файла драйвера устройства Windows (.DRV).
Например, если вы хотите создать проект Пакета разработчика
ресурсов, содержащий только курсор, можно создать проект, кото-
рый содержит единственный файл .CUR.
Чтобы использовать все преимущества функциональных возмож-
ностей Пакета разработчика ресурсов, ваш проект Пакета разработ-
чика ресурсов должен строиться вокруг файла .RC. Например, один
файл .RC может ссылаться на несколько диалоговых окон, курсоров,
пиктограмм, битовых массивов или шрифтов.
Приведем пример набора файлов, с которыми вы можете рабо-
тать. Предположим, во-первых, что вы создали файл .RC и назвали
его MYPROJ.RC. Этот файл будет центральным файлом вашего проекта.
Вы можете добавить столько видов ресурсов, сколько хотите, но на
все в вашем проекте нужны ссылки в файле .RC.
-------------¬
¦ myproj.rc ¦ Файл .RC - это основной файл проекта
¦ .......... ¦ Пакета разработчика ресурсов
¦ .......... ¦
¦ .......... ¦
¦ .......... ¦
¦ .......... ¦
¦ .......... ¦
L-------------
Рис. 2.8 NMYPROJ.RC - центральный файл описания проекта
Предположим, вы хотите создать курсор и битовый массив. Вы
можете создать эти новые ресурсы с помощью команды Resource¦New
(Ресурс¦Новый) и указать, что вы хотите записать их во внешних
файлах - файле курсора .CUR и файле битового массива .BMP. Пакет
разработчика ресурсов помещает в файл .RC ссылки, благодаря чему
вы можете использовать графический редактор Пакета разработчика
ресурсов, чтобы нарисовать курсор и битовый массив. Пакет разра-
ботчика ресурсов сохранит их в соответствующих файлах.
Диаграмма этих связей показана на следующих рисунках:
-------------¬ ---------------¬
¦ myproj.rc ¦ -------------------+ mycursor.cur ¦
¦ .......... ¦ ¦ ¦ ............ ¦
¦ .......... ¦ ¦ ¦ ............ ¦
¦ ..........-+---- ¦ ............ ¦
¦ .......... ¦ ¦ ............ ¦
¦ ..........-+---¬ ¦ ............ ¦
¦ .......... ¦ ¦ ¦ ............ ¦
L------------- ¦ L---------------
¦
¦
¦ ---------------¬
L------------------+ mybitmap.bmp ¦
¦ ............ ¦
Файл .RC содержит ссылки на ¦ ............ ¦
двоичные данные, содержащиеся ¦ ............ ¦
в файлах .CUR и .BMP ¦ ............ ¦
¦ ............ ¦
¦ ............ ¦
L---------------
Рис. 2.9 MYPROJ.RC указывает на файлы .CUR и .MAP
Предположим теперь, что вы хотите использовать идентификато-
ры для присваивания ресурсам смысловых имен. Если вы добавите к
проекту файл заголовка (.H), Пакет разработчика ресурсов помещает
ссылку на файл заголовка в файл .RC и может затем записывать в
файл заголовка новые идентификаторы.
-------------¬ ---------------¬
¦ myproj.rc ¦ -------------------+ mycursor.cur ¦
¦ .......... ¦ ¦ ¦ ............ ¦
¦ .......... ¦ ¦ ¦ ............ ¦
¦ ..........-+---- ¦ ............ ¦
¦ .......... ¦ ¦ ............ ¦
¦ ..........-+---¬ ¦ ............ ¦
¦ .......... ¦ ¦ ¦ ............ ¦
L-----T------- ¦ L---------------
¦ ¦
¦ ¦
¦ ¦ ---------------¬
¦ L------------------+ mybitmap.bmp ¦
¦ ¦ ............ ¦
-------+-------¬ ¦ ............ ¦
¦ myproj.h ¦ ¦ ............ ¦
¦ ............ ¦ ¦ ............ ¦
¦ ............ ¦ ¦ ............ ¦
¦ ............ ¦ ¦ ............ ¦
¦ ............ ¦ L---------------
¦ ............ ¦ Файл .H содержит определения
¦ ............ ¦ #define, которые вы можете использовать
L--------------- для присваивания ресурсам смысловых
имен.
Рис. 2.10 Файл MYPROJ.RC указывает на файлы .CUR, .MAP и
.CUR
Итак, вы работаете с файлами данных ресурсов, которые можно
с помощью Пакета разработчика ресурсов скомпилировать в один файл
.RES, а затем связать его с помощью компилятора языка фирмы
Borland с существующим выполняемым файлом.
----------------------------------------------------------------¬
¦ -------------¬ ---------------¬ ¦
¦ ¦ myproj.rc ¦ -------------------+ mycursor.cur ¦ ¦
¦ ¦ .......... ¦ ¦ ¦ ............ ¦ ¦
¦ ¦ ..........-+---- ¦ ............ ¦ ¦
¦ ¦ ..........-+---¬ ¦ ............ ¦ ¦
¦ ¦ .......... ¦ ¦ ¦ ............ ¦ ¦
¦ L-----T------- ¦ L--------------- ¦
¦ ¦ ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ ¦ ---------------¬ ¦
¦ ¦ L------------------+ mybitmap.bmp ¦ ¦
¦ ¦ ¦ ............ ¦ ¦
¦ -------+-------¬ ¦ ............ ¦ ¦
¦ ¦ myproj.h ¦ ¦ ............ ¦ ¦
¦ ¦ ............ ¦ ¦ ............ ¦ ¦
¦ ¦ ............ ¦ L--------------- ¦
¦ ¦ ............ ¦ ¦
¦ ¦ ............ ¦ ¦
¦ L--------------- ¦
L------------------------------T---------------------------------
¦
v
---------------¬ Скомпилированный
¦ myproj.res ¦ файл ресурсов
¦ ............ ¦
¦ ............ ¦
¦ ............ ¦
L------T--------
¦
v
---------------¬ Выполняемый файл
¦ myproj.exe ¦
¦ ............ ¦
¦ ............ ¦
¦ ............ ¦
¦ ............ ¦
L---------------
Рис. 2.11 Файл MYPROJ.RC, встроенный в выполняемый файл
Конечно на самом деле проекты Па+кета разработчика ресурсов
будут гораздо более сложными и большими,чем этот приведенный выше
пример. Некоторые этапы вы можете выполнить по-другому, например,
пропустить файл .RES и выполнить компиляцию непосредственно из
ваших исходных данных в выполняемый файл. Однако принцип проекта
остается неизменным, и после того, как вы познакомитесь с этой
идеей, создание ваших собственный проектов Пакета разработчика
ресурсов не составит для вас труда.
Работа с файлом описания проекта - окно проекта
-----------------------------------------------------------------
Пакет разработчика ресурсов облегчает вам разработку необхо-
димых ресурсов и позволяет работать со всеми ресурсами прикладной
программы.
Независимо от того, работаете вы с существующим проектом или
создаете новый, первое, что вы увидите в Пакете разработчика ре-
сурсов, это окно проекта. В окне проекта вам выводится информация
о том проекте, с которым вы работаете, включая типы ресурсов и
файлов, используемых в проекте.
Многие проекты состоят из основного файла .RC, который со-
держит ссылки на другие ресурсы. Ссылки в основном файле .RС мо-
гут включать в себя:
- другие файлы .RC;
- файлы .DLG;
- файлы двоичных ресурсов, такие как .BMP (битовые массивы),
файлы .CUR (курсоры) и файлы .FNT (шрифты);
- файлы .H содержат определения #defines, которые присваива-
ют ресурсам осмысленные имена;
- файлы .INC (включаемые) или файлы .PAS (модули), содержа-
щие константы Паскаля и присваивающие вашим ресурсам ос-
мысленные имена.
----T---------------------------------------------------T---T---¬
¦ - ¦ с/:workshop/myproj.rc ¦ v ¦ ^ ¦
+---+---------------------------------------------------+---+---+
¦-c:/WORKSHOP/myproj.rc-----------------------------------------¦
+-------------------------------------------------------------T-+
¦ include typical.rc ¦^¦
¦ #include titled.h +-+
¦ DIALOG: DIALOG_1 ¦-¦
¦ MENU: MENU_1 ¦-¦
¦ STRINGTABLE: MENU_FILE ¦-¦
¦ ¦-¦
¦ arrow.cur ¦-¦
¦ CURSOR: CURSOR_1 ¦-¦
¦ ¦-¦
¦ telecomm.ico ¦-¦
¦ ICON: ICON_1 ¦-¦
¦ ¦-¦
¦ ¦-¦
¦ +-+
¦ ¦v¦
L-------------------------------------------------------------+--
Рис. 2.12 Типичное окно проекта
Кроме предоставления вам возможности обзора всех файлов и
ресурсов, содержащихся в проекте, окно проекта Пакета разработчи-
ка ресурсов позволяет также при необходимости выполнять необходи-
мое изменение и перекомпиляцию. Например, если вы измените иден-
тификатор ресурса, Пакет разработчика ресурсов автоматически
перекомпилирует все ресурсы, на которые влияет данное изменение.
В следующей главе окно проекта описывается более подробно и
поясняется, как можно использовать его меню и средства для работы
с проектами.
Замечания для неопытных пользователей
-----------------------------------------------------------------
Наиболее важной концепцией, которую требуется понимать для
работы с Пакетом разработчика ресурсов, является единственная
концепция - проект. Организация одного или более ресурсов в про-
ект упрощает работу с ресурсами, а Пакет разработчика ресурсов
берет на себя многие детали (например, помещение ссылок в соот-
ветствующие файлы). В большинстве случаев желательно создавать
проект на основе файла .RC. Это позволяет использовать все функ-
циональные возможности Пакета разработчика ресурсов.
Если у вас нет опыта работы с Пакетом разработчика ресурсов,
прочитайте сначала Главу 3, где вы найдете информацию о создании
и работе с проектами. Изучение Главы 3 даст вам также основы, не-
обходимые для создания ресурсов.
Приведем некоторые замечания, которые помогут вам быстрее
начать работу:
- Для открытия существующих файлов описания проектов или
создания новых используйте меню File (Файл).
- Для получения пояснений по функциям Пакета разработчика
ресурсов используйте строку состояния в нижней части окна
Пакета разработчика ресурсов.
* В левой части строки состояния вы найдете краткое
описание текущих подсвеченных команд меню. В правой
части строки состояния выводится полезная информация,
которая пригодится вам для работы с одним из редакто-
ров ресурсов.
* Оперативный справочник Help дает более углубленные
описания всех аспектов Пакета разработчика ресурсов.
Получить доступ к контекстному справочнику можно с
помощью клавиш Shift+F1. При этом выведется курсор
Help. Щелкните кнопкой "мыши", поместив курсор не ин-
тересующую вас тему.
- Если вы используете идентификаторы, убедитесь, что вы за-
писываете их в соответствующем файле идентификаторов. Луч-
ше избегать записи идентификаторов в файле ресурсов. Когда
вы записываете идентификатор, Пакет разработчика ресурсов
выводит вам то место, куда его нужно записать.
- Пакет разработчика ресурсов включает в себя средства Undo
(Отмена) и Redo (Повтор), которые позволяют вам проходить
в обоих направлениях предыдущие задачи, которые выполня-
лись ранее. Например, вы можете отменить линии, нарисован-
ные в битовом изображении. Для задания максимального числа
уровней отмены используйте команду File¦Preferences (Файл¦
Параметры).
- Для работы с ресурсами прикладной программы вам не требу-
ется обращаться к исходному коду программы. Пакет разра-
ботчика ресурсов может декомпилировать ресурсы в существу-
ющем выполняемом файле и позволяет вам вносить в них
изменения.
- Вы можете работать с существующими выполняемыми файлами,
файлами .DLL и .FON, но не можете создать с помощью Пакета
разработчика ресурсов новый выполняемый файл, файл .DLL
или .FON.
