Kembangkan U32 Outhorware menggunakan Delphi
Fungsi Fungsi adalah fitur yang paling menonjol dari Authorware. Untuk beberapa tugas khusus, Authorware memungkinkan pengguna untuk mendefinisikan fungsi sendiri, membuat pemrograman lebih fleksibel. Untuk sistem Windows, fungsi khusus disimpan sebagai file Dynamic Link Link (DLL), sehingga file yang menyimpan fungsi khusus dipisahkan dari file aplikasi interaktif saat ini. Artikel ini memperkenalkan cara menggunakan Delphi untuk mengembangkan fungsi kustom otorware - 32bitU32. Meskipun AuthorWareAttain 5.0 telah menyediakan fungsi menggunakan KnowledgeObjects untuk menampilkan kotak pesan, fitur ini tidak ada dalam versi sebelum 4.0. Ini memungkinkan Anda untuk mengembangkan U32 Anda sendiri dalam bahasa lain dan menyebutnya di Authorware.
Mengembangkan U32 dapat dibagi menjadi lima langkah:
Buat file proyek
Buat fungsi
Buat file sumber daya
Menyusun file sumber daya
Buat U32
1. Buat file proyek
Pilih DLL di File/Baru untuk menghasilkan file DLL, tambahkan unit yang berisi kode fungsi U32 di File/Addtoproject…. Pengguna dapat dideklarasikan dalam fungsi Authorware dipanggil. Misalnya:
ExportSMSGBox;
Kode terakhir adalah sebagai berikut:
LibryaLauthorware;
penggunaan
Sysutils, kelas,
myunitin'myunit.pas ';
ExportSMSGBox;
Mulai
akhir.
2. Buat fungsi
Saat Anda membuat fungsi yang tersedia di Authorware, Anda harus mendeklarasikannya sebagai fungsi yang diekspor dan menambahkan kode setelah antarmuka kata kunci sebagai berikut:
antarmuka
Penggunaan, Dialog, Sysutils, Windows;
functionMSgbox (msg: string; mBtype:
Kata; judul: string): kata; ekspor;
Delphi32 perlu menambahkan {$ ifdefwin32} stdcall;
($ endif} diikuti oleh deklarasi fungsi sebagai berikut:
functionMSgbox (msg: string; mBtype:
Kata; judul: string): kata; ekspor;
{$ ifdefwin32} stdcall; {$ endif}
Sekarang kami menambahkan kode ke fungsi dan mengikuti implementasi:
const
Okonly = 0;
Okcancel = 1;
Abortretryignore = 2;
Yesnocancel = 3;
Yesno = 4;
Retrycancel = 5;
Kritis = 16;
Pertanyaan = 32;
Excalamation = 48;
Informasi = 64;
DefaultButton1 = 0;
DefaultButton2 = 256;
DefaultButton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
functionstrtopch (str: string): pchar;
vara: pchar;
Mulai
A: = Stralloc (panjang (str) +1);
Strpcopy (a, str);
Strtopch: = a;
akhir;
functionMSgbox (msg: string; mBtype:
Word; Judul: String): Word;
Var
LPTEXT, LPCAPTION: PCHAR;
h: hwnd;
Mulai
LPTEXT: = strtopch (judul);
LPCaption: = strtopch (msg);
h: = getActiveWindow ();
Msgbox: = messagebox (h, lPtext, lpcaption, mBtype);
akhir;
3. Buat file sumber daya
Hal terakhir yang harus kami lakukan adalah membuat file sumber daya sehingga penulisware dapat menghubungi fungsi secara langsung. Anda harus terlebih dahulu membuat file .rc dan kemudian mengkompilasinya ke dalam file .res. Gunakan Notepad untuk membuat file sumber daya untuk .rc. Tambahkan definisi berikut: Saya akan menjelaskan definisi ini nanti:
1dll_headerpreloaddiscardable
MULAI
"Msgbox/0",
"/0"
AKHIR
msgboxdll_headerpreloaddiscardable
MULAI
"/0",
"W/0",
"SWS/0",
"Hasil: = msgbox (msg, mbtype, judul)/r/n",
"/r/n",
"ShowmessageBox/0",
AKHIR
Jika file DLL ditulis dalam format konversi panggilan otorware, direktori semua fungsi khusus yang disimpan di dalamnya juga termasuk dalam file, dan informasi yang diperlukan oleh Authorware saat memanggil fungsi -fungsi ini juga disertakan, dan direktorinya disebut Sumber Direktori , dan setiap fungsi dalam sumber direktori memiliki definisi yang sesuai, dan definisi ini disebut sumber definisi. Format spesifiknya adalah sebagai berikut:
1. Sumber Direktori
Format sumber direktori adalah sebagai berikut:
| Dll_headerpreloadDiscardable
MULAI
"FunctionName [= ExportName]/0",
"FunctionName [= ExportName]/0",
….
"FunctionName [= ExportName]/0",
“/0”
AKHIR
① | adalah pengidentifikasi sumber direktori;
②dll_header adalah tanda awal yang digunakan untuk membuat teks deskriptif;
③Begin menunjukkan awal file sumber direktori.
END menunjukkan akhir dari sumber direktori.
2. Format Definisi Fungsi Kustom
Untuk setiap fungsi dalam sumber direktori, harus ada format definisi yang sesuai, format spesifik adalah sebagai berikut:
functionNamedLL_HeaderPreloadDiscardable
MULAI
"Dllfilename/0"
“ReturnValue/0”
“ArgumentList/0”
"Deskripsi>",
"keterangan",
...
"Deskripsi/0"
AKHIR
① FunctionName mengacu pada nama fungsi yang ditentukan dalam sumber direktori;
②dllfilename mewakili nama file DLL dari fungsi penyimpanan;
③ ReturnValue mewakili jenis nilai pengembalian fungsi;
④ArgumentList mewakili daftar tipe parameter dalam fungsi ini;
⑤Deskripsi mewakili teks deskriptif dari fungsi tersebut.
Badan deskriptif dapat terdiri dari banyak garis, tetapi baris terakhir harus diakhiri dengan "/0".
3. Tipe Parameter Format Deskripsi
Jenis parameter diwakili oleh huruf kapital, dan setiap huruf mewakili format parameter, seperti yang ditunjukkan pada tabel berikut:
Deskripsi Format TypedScribe Tipe Format
Csignedcharpfarpointer
BURSIGNEDCHARFFLOAT
ISIgnedShortIntegerddouble
Wunsignedshortintegershandle
LSignedLongIntegervvoid
Uunsignedlonginteger
4. Kompilasi file sumber daya
Simpan file sumber daya .rc sebagai a3w.rc (perhatikan bahwa nama file tidak dapat disimpan dan nama file DLL tidak dapat disimpan, jika tidak, file sumber daya Delphi akan menimpanya). dan jalankan dalam mode dos:
c: /delphi32/bin/brc32-ra3w.rc-foa3w32.res
Sekarang tambahkan file sumber daya ke proyek, kembali ke Delphi di View/ProjCetsource untuk membuka file proyek
ExportSMSGBox;
{$ R*.res}
Hapus baris dan bergabung: {$ ifdefwin32}
{$ Ra3w32.res}
{$ else}
{$ Ra3w16.res}
{$ endif}
Menyusun file proyek.
5. Buat U32
Kami telah membuat 32bit authorware.dll dan mengganti namanya menjadi Authorware.u32.
Msgbox ("kotak peringatan", 1+32+0+4096, "Apakah Anda keluar dari sistem ini?")