Создание и использование только ресурсов в DLL
Ресурсы могут быть стандартные и определенные пользователем. Данные в стандартном ресурсе описывают иконку, курсор, меню, диалоговое окно, точечный рисунок, расширенный метафайл, шрифт, таблицу горячих клавиш, строки и версию. Определенный пользователем ресурс может содержать любые данные, требуемые приложением (другой .EXE, GIF, MP3 и т.д.).
Динамические библиотеки содержат общий код или ресурсы, которые могут использоваться многократными приложениями совместно.
Создание DLL с ресурсами
Чтобы сделать DLL только с ресурсами, нужно создать и скомпилировать проект пустой DLL, которая содержит ссылки на файл ресурсов .RES, который содержит Ваши ресурсы.
Затем выполнить следующие шаги:
1. Создайте RC файл, описывающий ресурсы, которые Вы хотите поместить в DLL. Как в примере: (adpdllresources - имя RC файла ASCII) - один ICON и один GIF добавлен в RC файл:
adpdllresources.rc aboutlogo RCDATA aboutlogo.gif factory ICON FACTORY.ICO
2. Скомпилируйте RCфайл в RES файл при помощи компилятора ресурсов BRCC32
3. Создайте проект пустой DLL. Сохраните его как adpResources.dpr - после компиляции DLL будет иметь имя adpResources.dll. Полный код проекта DLL будет иметь всего четыре строки в одном файле.
library adpResources; {$R adpdllresources.RES} begin end.
4. Откомпилируйте Ваш DLL (убедитесь, что adpdllresources.res находится в том же каталоге, что и проект DLL
Как только DLL с ресурсами будет создан, Вы можете использовать его внутри Ваших приложений Delphi. Обратите внимание, что эти ресурсы внутри DLL может использовать любое приложение (не обязательно Delphi).
Как использовать ресурсы из DLL
Чтобы использовать ресурсы из динамической библиотеки, просто загрузите DLL и ресурсы, которые Вы хотите использовать.
Следуйте этим шагам:
- Создайте новый проект Delphi. По умолчанию, Delphi добавляет одну форму к проекту. Сохраните проект
- Скопируйте DLL с ресурсами (adpResources.dll в папку, где Ваше новое приложение было сохранено
- Загрузите ресурс, как показано ниже...
Пример, как загрузить иконку factory и нарисовать ее на холсте Form1, когда Button1: TButton была нажата).
procedure TForm1.Button1Click(Sender: TObject); const resICON = 'factory'; var h : THandle; Icon : HIcon; begin h := LoadLibrary('adpResources.DLL'); try if h <> 0 then begin Icon := LoadIcon(h, resICON); DrawIcon(Canvas.Handle, 10, 10, Icon); end else begin ShowMessage('Load Resource DLL FAILED!'); end; finally FreeLibrary(h); end; end;
Если Вы добавите поддержку GIF, Вы можете использовать изображение GIF, хранимое в ресурсном DLL, а также его рисовать:
procedure TForm1.Button2Click(Sender: TObject); const resGIF = 'aboutlogo'; var h : THandle; gif : TGifImage; r:TRect; begin h := LoadLibrary('adpResources.DLL'); try if h <> 0 then begin gif := TGIFImage.Create; try gif.LoadFromResourceName(h,resGIF); gif.Paint(Canvas, Form1.ClientRect, [goDirectDraw]); finally gif.Free; end; end else begin ShowMessage('Load Resource DLL FAILED!'); end; finally FreeLibrary(h); end; end;
На этом все!
Комментарии