Isi Dynamic Link Library (DLL) tidak harus berupa fungsi. DLL bisa menyimpan resource dengan baik. Resource bisa berupa bitmap, ikon, cursor, atau yang lain. Sebagi contohnya adalah file moricons.dll (berlokasi dalam direktori sistem Windows). File ini hanya berisi kumpulan icon yang bisa dimanfaatkan oleh user.
Untuk menggunakan DLL sebagai penyimpan resource, caranya sama seperti pada pemrograman biasa. Yang dibutuhkan adalah tambahan baris compiler directive yang menunjuk ke file resource yang digunakan.
Sebagai contoh, program berikut mendemonstrasikan bagaimana menyimpan beberapa file bitmap dan ikon pada file ImageCollection.dll.
Untuk mengambil bitmap digunakan fungsi LoadBitmap(), sedangkan untuk mengambil ikon digunakan fungsi LoadIcon(). Parameter pertama diisi dengan nilai handle file DLL, sedangkan parameter kedua menunjukkan nama pengenal resource. Kedua fungsi ini mengembalikan nilai handle resource jika berhasil, dan bernilai nol jika gagal.
Untuk menggunakan DLL sebagai penyimpan resource, caranya sama seperti pada pemrograman biasa. Yang dibutuhkan adalah tambahan baris compiler directive yang menunjuk ke file resource yang digunakan.
Sebagai contoh, program berikut mendemonstrasikan bagaimana menyimpan beberapa file bitmap dan ikon pada file ImageCollection.dll.
Membuat File Resource
Langkah pertama adalah membuat file resource (file dengan ekstensi .RES). Untuk membuatnya lakukan langkah-langkah berikut.- Buat sebuah file teks (misalnya dengan Notepad), kemudian ketikkan baris berikut:
Bitmap1 BITMAP "Emboss_Logo.bmp" Icon1 ICON "Icon_001.ico" Icon2 ICON "Icon_015.ico" Icon3 ICON "Icon_016.ico"
Tentu saja Anda dapat menggunakan file bitmp dan ikon Anda sendiri. Simpan dengan ekstensi .rc misalnya "images.rc". - Letakkan file-file imge pada direktori yang sama dengan file images.rc yang baru saja Anda buat.
- Buka window Commad Prompt, pada shell prompt ketikkan BRCC32 diikuti path dan nama file rc Anda. contoh
BRCC32 e:\resource\images.rc
. Jika proses kompilasi berhasil, akan terbentuk file baru dengan nama images.res
Membuat File DLL
Memasukkan resource ke dalam file DLL tidaklah sulit, caranya:- Buat proyek DLL baru, caranya pilih menu File | New | DLL.
- Simpan proyek dengan nama ImageCollection.dpr.
- Letakkan file images.res ke dalam direktori yang sama dengan file proyek.
- Tambahkan perintah compiler directive {$R images.res} setelah baris {$R *.RES}.
- Pilih menu Project | Build All Projects. Jika proses kompilasi berhasil, akan terbentuk file ImageCollection.dll
Menggunakan DLL
Program berikut ini menunjukkan bagaimana cara menggunakan file ImageCollection.dll secara run-time dynamic linking.Untuk mengambil bitmap digunakan fungsi LoadBitmap(), sedangkan untuk mengambil ikon digunakan fungsi LoadIcon(). Parameter pertama diisi dengan nilai handle file DLL, sedangkan parameter kedua menunjukkan nama pengenal resource. Kedua fungsi ini mengembalikan nilai handle resource jika berhasil, dan bernilai nol jika gagal.
unit UMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; BtnLoadBitmap: TButton; BtnLoadIcon: TButton; Label1: TLabel; Image1: TImage; Image2: TImage; Image3: TImage; procedure BtnLoadBitmapClick(Sender: TObject); procedure BtnLoadIconClick(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; DllHandle: THandle; implementation {$R *.dfm} procedure TForm1.BtnLoadBitmapClick(Sender: TObject); var Bitmap1: HBITMAP; begin DllHandle:= LoadLibrary('ImageCollection.dll'); if (DllHandle = 0) then begin Application.MessageBox('Gagal membuka library', 'Kesalahan', MB_OK or MB_ICONEXCLAMATION); exit; end; Bitmap1:= LoadBitmap(DllHandle, 'Bitmap1'); Image1.Picture.Bitmap.Handle:= Bitmap1; end; procedure TForm1.BtnLoadIconClick(Sender: TObject); var Icon1, Icon2: HICON; begin DllHandle:= LoadLibrary('ImageCollection.dll'); if (DllHandle = 0) then begin Application.MessageBox('Gagal membuk library', 'Kesalahan', MB_OK or MB_ICONEXCLAMATION); exit; end; Icon1:= LoadIcon(DllHandle, 'Icon1'); Icon2:= LoadIcon(DllHandle, 'Icon2'); Image2.Picture.Icon.Handle:= Icon1; Image3.Picture.Icon.Handle:= Icon2; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeLibrary(DllHandle); end; end.
Comments
Post a Comment