| Ресурсы в программах на WIN32API. |
| Ресурсы - двоичные данные, которые можно добавлять в исполняемый файл программы. Помимо стандартных ресурсов можно определять собственные - заказные ресурсы. Каждый ресурс идентифицируется либо строкой имени, либо числом от 1 до 65535. Во втором случае число необходимо пропустить через макрос MAKEINTRESOURCE, конвентирующий целое число в тип ресурса, совместимый с функциями управления ресурсами. Таким образом некоторые объекты можно создать заранее и затем загружать их из исполняемого файла или создавать их динамически во время выполнения программы. К стандартным ресурсам относятся: таблица акселераторов, изображение, курсор, метафайл, шрифт, иконка, меню, окно диалога, таблица строк, информация о версии программы. Размещение ресурсов в .EXE файле имеет два основных преимущества:
- Ресурс загружается более быстро, чем если бы он грузился с диска. Для начала нам нужно создать файл ресурса. По умолчанию расширение для этих файлов - .RES. Файл ресурса может быть создан с помощью Image Editor, который входит в поставку с Delphi. Подробнее читайте файл справки данной программы. Но мы пойдем другим путем… |
| Ресурс Bitmap. | |||
| Чтобы действительно использовать ресурс, Вы должны сделать несколько вызовов Windows API. BMP-изображения, курсоры и иконки загруженные в файлы RES могут быть извлечены использованием функций LoadBitmap, LoadCursor и LoadIcon соответственно. Создайте текстовый файл, например, testres.rc и поместите в него следующее:
В этом примере: После сохранения данного текста необходимо скомпилировать ресурс, используя программу Borland Resource Compiler (консольное приложение brcc32.exe), которая входит в поставку с Delphi.
После этого будет создан полноценный файл ресурса с расширением .RES. Далее остается подключить его в программу директивой компилятора - {$R testres.res}. Чтобы загрузить побитовое изображение, которое расположено в ресурсах программы, например, в орган управления Static, нужно выполнить следующее:
При этом орган управления Static должен содержать стиль SS_BITMAP. |
| Ресурс Icons. | ||
Что же касается иконок, то работа с ними очень похожа на работу с BMP-изображениями. Отличие заключается в папке, в которую компилируются иконки:
В этом примере: Наверное, нет смысла напоминать о том, что нужно скомпилировать ресурс, подключить к программе и…
При этом орган управления Static должен содержать стиль SS_ICON. |
| Ресурс String. | |||
Довольно интересна работа со строковыми ресурсами. На первый взгляд здесь все просто: загружаешь готовый текст и наслаждаешся резуальтатом. Но есть и подводные камни. Например, что делать, если нужно вставить в готовый текст какие-то определенные данные, например числа или подставить другой текст? И с этим можно легко справится. В файле ресурса пишем:
STRINGTABLE - Секция строковых ресурсов. Чтобы без особых проблем вызывать строку из ресурсов, была написана небольшая функция, которая тестировалась во всех операционных средах Windows и показала надежные результаты своей работы:
|
| Лицензия из ресурсов. | |||
При установке программы всегда приходится соглашатся с надоедливой лицензией. Следующий пример покажет, как можно загрузить текст из ресурсов в орган управления Edit:
3 - Название ресурса. Для загрузки текста в Edit была написана следующая функция:
Очень важно присвоить органу управления Edit нужные стили. Иначе текст не будет отображен так как нужно. Необходимые стили: ES_MULTILINE, WS_VSCROLL, WS_HSCROLL.
|
| Ресурс WAV. | ||||
Последнее время большой популярностью у программистов пользуется озвучивание некоторых событий в приложении. А в различных напоминалках вообще без этого не обойтись. Обычно для этого применяются WAV-файлы:
ZVUK - Имя ресурса. Для простого проигрывания WAV-ресурсов была написана следующая процедура:
Теперь осталось подключить модуль MMSystem в uses программы и проиграть звук:
Для остановки воспроизведения звука можно воспользоватся командой:
|
| Ресурс Menu. | ||
Ни один текстовый редактор не обходится без меню. А в tray-области меню становится просто необходимым:
300 - Идентификатор меню.
|
| Сохранения ресурса на диск. | ||
Eсли вам нужно будет извлечь какой-нибудь ресурс из программы для последующей работы, то сделать это можно так:
Вот так выглядит метод применения данной функции (извлечение значка):
Хочется верить, что после публикации данной статьи не будут больше возникать вопросы по поводу использования ресурсов в программах, написаных на WIN32API в DELPHI. Но кто знает, что уже завтра придумает человечество… |
| Copyright © 2002-2008 by Vladimir Drigalkin aka LENIN INC. All Rights Reserved. |