พัฒนา U32 ของ Authorware โดยใช้ Delphi
ฟังก์ชั่นฟังก์ชั่นเป็นคุณลักษณะที่โดดเด่นที่สุดของ Authorware สำหรับงานพิเศษบางอย่าง AuthorWare ช่วยให้ผู้ใช้สามารถกำหนดฟังก์ชั่นด้วยตนเองทำให้การเขียนโปรแกรมมีความยืดหยุ่นมากขึ้น สำหรับระบบ Windows ฟังก์ชั่นที่กำหนดเองจะถูกเก็บไว้เป็นไฟล์ Dynamic Link Library (DLL) ดังนั้นไฟล์ที่จัดเก็บฟังก์ชั่นที่กำหนดเองจะถูกคั่นด้วยไฟล์แอปพลิเคชันแบบโต้ตอบปัจจุบัน บทความนี้แนะนำวิธีการใช้ Delphi เพื่อพัฒนาฟังก์ชั่นที่กำหนดเองของ Authorware - 32bitu32 แม้ว่า AuthorWareattain 5.0 ได้ให้ฟังก์ชั่นการใช้ความรู้เพื่อแสดงข้อความ แต่คุณลักษณะนี้ไม่ได้มีอยู่ในเวอร์ชันก่อน 4.0
การพัฒนา U32 สามารถแบ่งออกเป็นห้าขั้นตอน:
สร้างไฟล์โครงการ
สร้างฟังก์ชัน
สร้างไฟล์ทรัพยากร
รวบรวมไฟล์ทรัพยากร
สร้าง U32
1. สร้างไฟล์โครงการ
เลือก DLL ในไฟล์/ใหม่เพื่อสร้างไฟล์ DLL เพิ่มหน่วยที่มีรหัสฟังก์ชั่น U32 ในไฟล์/addToproject … ผู้ใช้สามารถประกาศในฟังก์ชั่น Authorware ที่เรียกว่า ตัวอย่างเช่น:
ExportSmsgbox;
รหัสสุดท้ายมีดังนี้:
Libraryauthorware;
ใช้
Sysutils, ชั้นเรียน,
myunitin'myunit.pas ';
ExportSmsgbox;
เริ่ม
จบ.
2. สร้างฟังก์ชั่น
เมื่อคุณสร้างฟังก์ชั่นที่มีอยู่ใน Authorware คุณต้องประกาศว่าเป็นฟังก์ชั่นที่ส่งออกและเพิ่มรหัสหลังจากอินเทอร์เฟซคำหลักดังนี้:
ส่วนต่อประสาน
ใช้, กล่องโต้ตอบ, sysutils, windows;
functionmsgbox (msg: string; mbtype:
Word; Title: String): Word; Export;
delphi32 ต้องเพิ่ม {$ ifdefwin32} stdcall;
($ endif} ตามด้วยการประกาศฟังก์ชั่นดังนี้:
functionmsgbox (msg: string; mbtype:
Word; Title: String): Word; Export;
{$ ifdefwin32} stdcall; {$ endif}
ตอนนี้เราเพิ่มรหัสลงในฟังก์ชั่นและติดตามการใช้งาน:
const
okonly = 0;
OkCancel = 1;
AbortretryIgnore = 2;
ใช่ NOCANCEL = 3;
ใช่ไม่มี = 4;
retryCancel = 5;
วิกฤต = 16;
คำถาม = 32;
Excalamation = 48;
ข้อมูล = 64;
defaultButton1 = 0;
defaultButton2 = 256;
defaultButton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
functionStRtopch (str: string): pchar;
VARA: PCHAR;
เริ่ม
A: = stralloc (ความยาว (str) +1);
strpcopy (a, str);
strtopch: = a;
จบ;
functionmsgbox (msg: string; mbtype:
Word; Title: String): Word;
วาจา
lptext, lpcaption: pchar;
H: hwnd;
เริ่ม
lptext: = strtopch (ชื่อ);
lpcaption: = strtopch (msg);
H: = getActiveWindow ();
msgbox: = messagebox (h, lptext, lpcaption, mbtype);
จบ;
3. สร้างไฟล์ทรัพยากร
สิ่งสุดท้ายที่เราต้องทำคือการสร้างไฟล์ทรัพยากรเพื่อให้ผู้ตัดสินสามารถเรียกใช้ฟังก์ชั่นได้โดยตรง คุณต้องสร้างไฟล์. RC ก่อนจากนั้นรวบรวมไว้ในไฟล์. RES ใช้ Notepad เพื่อสร้างไฟล์ทรัพยากรสำหรับ. rc เพิ่มคำจำกัดความต่อไปนี้: ฉันจะอธิบายคำจำกัดความเหล่านี้ในภายหลัง:
1DLL_HEADERPRELOADDISCARDABLE
เริ่ม
"msgbox/0",
"/0"
จบ
msgboxdll_headerpreloaddiscardable
เริ่ม
"/0",
"w/0",
"SWS/0",
"ผลลัพธ์: = msgbox (msg, mbtype, title)/r/n"
"/r/n",
"ShowMessageBox/0",
จบ
หากไฟล์ DLL ถูกเขียนไว้ในรูปแบบการแปลง Authorware Call การเรียกใช้ไดเรกทอรีของฟังก์ชั่นที่กำหนดเองทั้งหมดที่เก็บไว้ในนั้นจะรวมอยู่ในไฟล์และข้อมูลที่ต้องการโดย AuthorWare เมื่อเรียกใช้ฟังก์ชั่นเหล่านี้ และแต่ละฟังก์ชั่นในแหล่งที่มาของไดเรกทอรีมีคำจำกัดความที่สอดคล้องกันและคำจำกัดความเหล่านี้เรียกว่าแหล่งคำจำกัดความ รูปแบบเฉพาะมีดังนี้:
1. แหล่งที่มาของไดเรกทอรี
รูปแบบของแหล่งที่มาของไดเรกทอรีมีดังนี้:
| dll_headerpreloaddiscardable
เริ่ม
"functionName [= exportName]/0",
"functionName [= exportName]/0",
-
"functionName [= exportName]/0",
“/0”
จบ
① | เป็นตัวระบุแหล่งที่มาของไดเรกทอรี
②dll_headerเป็นเครื่องหมายเริ่มต้นที่ใช้ในการสร้างข้อความเชิงพรรณนา
③ BEGIN ระบุจุดเริ่มต้นของไฟล์ต้นฉบับของไดเรกทอรี
สิ้นสุดระบุจุดสิ้นสุดของแหล่งที่มาของไดเรกทอรี
2. รูปแบบนิยามฟังก์ชั่นที่กำหนดเอง
สำหรับแต่ละฟังก์ชั่นในแหล่งที่มาของไดเรกทอรีจะต้องมีรูปแบบคำจำกัดความที่สอดคล้องกันรูปแบบเฉพาะมีดังนี้:
functionnamedll_headerpreloaddiscardable
เริ่ม
"dllfilename/0"
“ returnValue/0”
“ ArgumentList/0”
"คำอธิบาย>",
"คำอธิบาย",
-
"คำอธิบาย/0"
จบ
① functionName หมายถึงชื่อฟังก์ชั่นที่กำหนดไว้ในแหล่งที่มาของไดเรกทอรี
②dllfilenameแสดงถึงชื่อไฟล์ DLL ของฟังก์ชั่นการจัดเก็บ
③ returnValue หมายถึงประเภทค่าส่งคืนของฟังก์ชัน;
④ArgumentListแสดงรายการประเภทพารามิเตอร์ในฟังก์ชันนี้
⑤descriptionแสดงถึงข้อความเชิงพรรณนาของฟังก์ชั่น
ร่างกายเชิงพรรณนาสามารถประกอบด้วยหลายบรรทัด แต่บรรทัดสุดท้ายจะต้องจบลงด้วย "/0"
3. รูปแบบพารามิเตอร์ประเภทคำอธิบาย
ประเภทพารามิเตอร์จะแสดงด้วยตัวอักษรทุนและตัวอักษรแต่ละตัวแสดงรูปแบบพารามิเตอร์ดังแสดงในตารางต่อไปนี้:
คำอธิบายรูปแบบการพิมพ์รูปแบบรูปแบบ
CSIGNEDCHARPFARPOINTER
Bunsignedcharffloat
isignedshortintegerddouble
wunsignedshortintegershandle
lsignedlongintegervvoid
uunsignedlonginteger
4. คอมไพล์ไฟล์ทรัพยากร
บันทึกไฟล์ทรัพยากรของ. rc เป็น a3w.rc (โปรดทราบว่าไม่สามารถบันทึกชื่อไฟล์และไม่สามารถบันทึกชื่อไฟล์ DLL มิฉะนั้นไฟล์ทรัพยากรของ Delphi จะเขียนทับไฟล์) และทำงานในโหมด DOS:
C: /delphi32/bin/brc32-ra3w.rc-foa3w32.res
ตอนนี้เพิ่มไฟล์ทรัพยากรลงในโครงการกลับไปที่ Delphi ใน View/ProjcetSource เพื่อเปิดไฟล์โครงการ
ExportSMSGBox;
{$ r*.res}
ลบบรรทัดและเข้าร่วม: {$ ifdefwin32}
{$ ra3w32.res}
{$ else}
{$ ra3w16.res}
{$ endif}
รวบรวมไฟล์โครงการ
5. สร้าง U32
เราได้สร้าง 32 บิต Authorware.dll และเปลี่ยนชื่อเป็น Authorware.U32
msgbox ("กล่องเตือน", 1+32+0+4096, "คุณออกจากระบบนี้หรือไม่?")