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.