DLL c JPG и другими ресурсами |
![]() |
![]() |
Статьи |
Для компиляции ресурсов, используемых в приложении, таких как курсоры, изображения, иконки в динамически связанную библиотеку DLL , применяется следующая технология:
Разберем детально этот механизм. 1. Сначала в обычном текстовом редакторе, например в "Блокноте", создадим текстовый файл с расширением " *.RC " , представляющего собой файл описания ресурсов. Файл содержит следующие строки вида: < имя ресурса > < тип ресурса > < путь к ресурсу > < имя файла > например, image1 RCDATA "picture.jpg" где строка описания ресурса содержит: имя ресурса - image1 , тип ресурса - RCDATA , с расположением ресурса " picture.jpg " в этом же каталоге, т.к. путь к ресурсу не указывается. Тип ресурса RCDATA используется для пользовательских ресурсов, для курсоров указывается тип CURSOR, для иконок - ICON, для изображений формата BMP - BITMAP. Например:
В Delphi поддерживаются следующие типы ресурсов
т.е. если вы хотите включить в библиотеку шрифт, то в файле RC указывается тип FONT. 2 . Ресурсы, включенные в файл описания ресурсов *.RC , затем нужно скомпилировать в файл ресурсов с расширением RES при помощи родного компилятора ресурсов Delphi - " brcc32.exe " ( Borland Resource CommandLine Compiler 32 bit ) , который находится в каталоге Borland\DelphiX\Bin , где X - версия Delphi . Утилита работает в режиме командной строки. Компиляция файла "example.RC " будет выглядеть следующим образом: с:\Проекты\brcc32.exe example.RC После компиляции в каталоге "с:\Проекты\" появится файл example.RES 3. Затем в среде Delphi создаем библиотеку DLL , куда включаем наш файл ресурсов example.RES . Для создания библиотеки DLL в среде Delphi меню " File " выбираем пункт " New " и пункт подменю " Other.. " В появившемся окне выбираем тип проекта DLL Wizard, что представляет собой нужную нам библиотеку DLL ![]() приводится код проекта " Project1 ".
Затем проект компилируем в файл DLL , выбрав в меню " Project " пункт " Build ". Получаем файл DLL с одноименным названием проекта "Project1". Загрузка нашей картинки JPG из библиотеки DLL осуществляется следующим образом. Сначала загружаем DLL в память (1), создаем поток для конкретного ресурса (2), извлекаемого из библиотеки, создаем объект изображения (3), производим загрузку ресурса в поток (4), освобождаем дескрипторы потока и библиотеки (5)
Учитывая особенности извлекаемых из DLL ресурсов, создается тот или иной объект, т.е. для растрового изображения типа BMP создается объект TBitmap и т.д. Владимир Богдановский |
Комментарии
RSS лента комментариев этой записи