Карта сайтаСсылкиКонтакты

Хостинг


Создание и использование только ресурсов в DLL

PDF Печать
Статьи

Кроме хранения ресурсов внутри .EXE файла, разработчик Delphi может также создать динамическую библиотеку, содержащую только ресурсы. Давайте посмотрим, как это сделать.

Ресурсы могут быть стандартные и определенные пользователем. Данные в стандартном ресурсе описывают иконку, курсор, меню, диалоговое окно, точечный рисунок, расширенный метафайл, шрифт, таблицу горячих клавиш, строки и версию. Определенный пользователем ресурс может содержать любые данные, требуемые приложением (другой .EXE, GIF, MP3 и т.д.).

Динамические библиотеки содержат общий код или ресурсы, которые могут использоваться многократными приложениями совместно.

Создание DLL с ресурсами

Чтобы сделать DLL только с ресурсами, нужно создать и скомпилировать проект пустой DLL, которая содержит ссылки на файл ресурсов .RES, который содержит Ваши ресурсы.

Затем выполнить следующие шаги:

  1. Создайте RC файл, описывающий ресурсы, которые Вы хотите поместить в DLL. Как в примере: (adpdllresources - имя RC файла ASCII) - один ICON и один GIF добавлен в RC файл:
  2. 
    adpdllresources.rc 
    
    aboutlogo RCDATA aboutlogo.gif
    factory ICON FACTORY.ICO
    
  3. Скомпилируйте RCфайл в RES файл при помощи компилятора ресурсов BRCC32
  4. Создайте проект пустой DLL. Сохраните его как adpResources.dpr - после компиляции DLL будет иметь имя adpResources.dll. Полный код проекта DLL будет иметь всего четыре строки в одном файле.
  5. 
    library adpResources;
    
    {$R adpdllresources.RES}
    
    begin
    end.
    
  6. Откомпилируйте Ваш DLL (убедитесь, что adpdllresources.res находится в том же каталоге, что и проект DLL

Как только DLL с ресурсами будет создан, Вы можете использовать его внутри Ваших приложений Delphi. Обратите внимание, что эти ресурсы внутри DLL может использовать любое приложение (не обязательно Delphi).

Как использовать ресурсы из DLL

Чтобы использовать ресурсы из динамической библиотеки, просто загрузите DLL и ресурсы, которые Вы хотите использовать.

Следуйте этим шагам:

  1. Создайте новый проект Delphi. По умолчанию, Delphi добавляет одну форму к проекту. Сохраните проект
  2. Скопируйте DLL с ресурсами (adpResources.dll в папку, где Ваше новое приложение было сохранено
  3. Загрузите ресурс, как показано ниже...

Пример, как загрузить иконку 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;

Все!


 

Добавить комментарий


Защитный код
Обновить