时间: 2021-07-31 作者:daque
用DELPHI开发AUTHORWARE的u32 因变量功效是authorware最超过的特性,运用authorware供给的体例因变量不妨实行少许搀杂的遏制工作。对于少许特出的工作,authorware承诺用户本人设置因变量,使得步调安排具备更大的精巧性。对于windows体例来说,自设置因变量是以动静链接库(dll)文献保存的,所以保存自设置因变量的文献与暂时交互式运用步调文献是分立。正文引见一下怎样用delphi开拓authorware的自设置因变量—32 bit u32,正文以delphi开拓可在authorware中挪用表露message box的u32为例子。固然authorware attain 5.0已供给了运用knowledge objects 表露message box的功效,但在4.0往日的本子无此功效,这就可用其它谈话开拓本人的u32,在authorware中挪用。 开拓u32可分为五个办法: 创造工程文献创造因变量创造资源文献编写翻译资源文献创造u32 1.创造工程文献 在file/new采用dll天生一个dll文献,在file/add to project….介入一个包括u32因变量代码的单位myunit.pas(此单位在第二步创造因变量中精细证明)在uses后必需证明一切可在authorware中挪用的因变量。比方: exports msgbox;最后的代码如次所似:library authorware;uses sysutils,classes, myunit in 'myunit.pas';exports msgbox;beginend. 2.创造因变量 当你创造一个因变量可用在authorware中,必需证明为exported 因变量在要害字interface 反面介入代码如次: interface uses ,dialogs,sysutils,windows; function msgbox(msg:string;mbtype:word;title:string):word;export;delphi32 须要增添{$ifdef win32} stdcall ; ($endif} 在因变量证明反面如:function msgbox(msg:string;mbtype:word;title:string):word;export;{$ifdef win32} stdcall ; {$endif}此刻咱们为因变量介入代码在implementation反面: const okonly=0; okcancel=1; abortretryignore=2; yesnocancel=3; yesno=4; retrycancel=5; critical=16; question=32; excalamation=48; information=64; defaultbutton1=0; defaultbutton2=256; defaultbutton3=512; applicationmodal=0; systemmodal=4096;function strtopch(str:string):pchar; var a:pchar; begin a:=stralloc(length(str)+1); strpcopy(a,str); strtopch:=a; end;function msgbox(msg:string;mbtype:word;title:string):word; var lptext,lpcaption:pchar; h:hwnd; begin lptext:=strtopch(title); lpcaption:=strtopch(msg); h:=getactivewindow(); msgbox:=messagebox(h,lptext,lpcaption,mbtype); end; 3.创造资源文献 结果咱们要做的工作是创造资源文献,如许authorware本领径直挪用因变量。必需先创造.rc文献而后编写翻译成.res文献。运用登记本创造.rc的资源文献。介入如次设置:我将在反面证明那些设置: 1 dll_header preload discardable begin "msgbox\0", "\0" end msgbox dll_header preload discardable begin "\0", "w\0", "sws\0", "result := msgbox(msg,mbtype,title)\r\n", "\r\n", "show messagebox\0", end 即使一个 dll文献是按authorware挪用变换方法编写,则保存于个中的一切自设置因变量的目次也包括在该文献中,而且authorware在挪用那些因变量时所需的消息也包括在前,其目次称为目次源,并且目次源中的每一个因变量有相映的设置,那些设置称为设置源。简直方法如次: 1. 目次源 目次源的方法如次所示: | dll_header preload discardablebegin “functionname [=exportname]\0”, “functionname [=exportname]\0”,….“functionname [=exportname]\0”,“\0”end ① | 是目次源操作符; ② dll_header 是用来创造刻画性笔墨的开始标志; ③ begin 表白该目次源文献的发端,而end则表白该目次源的结果。 2.自设置因变量的设置方法 对于目次源中每一因变量都要有一个相映的设置方法,简直方法如次所示: functionname dll_header preload discardablebegin “dllfilename\0” “returnvalue\0” “argumentlist\0” “description>”, “description”, … “description\0”end① functionname 指的是在目次源中以设置的因变量名;② dll filename 表白保存因变量的dll文献名;③ returnvalue 表白该因变量归来值典型;④ argumentlist 表白该因变量中的参数典型列表;⑤ description 表白该因变量刻画性正文。刻画性正文不妨有很多行构成,但结果一条龙必需加上“\0”中断符。 3.参数典型刻画方法 参数典型用一个小写假名表白,每一个假名表白一个参数方法,如次表所示: 刻画方法 典型 刻画方法 典型 c signed char p far pointer b unsigned char f float i signed short integer d double w unsignedshort integer s handle l signed long integer v void u unsigned long integer 4.编写翻译资源文献 把.rc的资源文献生存为a3w.rc(提防不许生存文献名与dll文献名沟通要不delphi本人的资源文献会掩盖它),delphi自带的编写翻译文献为brc32.exe,在dos形式下运转: c:\delphi32\bin\brc32 -r a3w.rc –foa3w32.res 此刻把资源文献介入工程中,归来delphi在view/projcet source打动工程文献在 exports msgbox;后可看到: {$r *.res} 简略该行介入: {$ifdef win32} {$r a3w32.res} {$else} {$r a3w16.res} {$endif}编写翻译工程文献. 5.创造u32 咱们仍旧创造了32bit的authorware.dll,把它更名成authorware.u32.此刻已胜利创造了u32.在authorware中挪用authorware.u32在演算安排按钮增添代码: msgbox("劝告框",1+32+0+4096,"能否退出本体例?")