Authorware5.0(以下简称AW5)是最流行的多媒体课件开发平台,功能强大,AW5本身包含有数百个函数和系统变量,而且还提供了用户代码文档接口(UseCodeDocument),以扩充其功能。在AW5的系统目录内,有多个扩展名为.ucd或.u32的文件,这就是用户代码文档文件,有Macromedia公司自己开发的,也有第三方厂商或个人为AW5开发的。其中.ucd文件是在16位程序环境下运行的,现在已不适用,而.u32文件是为在32位应用程序下开发的,本文所指的用户代码文档即这一种。以前,开发AW5的用户代码文档须在VC++下开发,现在在Dephi下也可以开发了。其实.u32文件就是一个DLL动态链接库文件,不过还要加一个特殊的字符串资源才能被AW5识别,下面举例说明:
假设我们要实现这样三个功能的函数:打开光驱、关闭光驱、能够让AW5生成的无标题栏窗体自由移动。好像AW5中还没有实现这些功能的函数,就让我们来补充一下。
启动Dephi5后,在“New”选项卡中选择“DLL”进入动态链接库开发环境。
在单元文件中输入:
librarymci;
uses SysUtils,MMSystem,//手工加入
windows,//手工加入
Messages,//手工加入
Classes; {$R*.RES} {$rcdrom.res}//加入特殊字符串资源
functionejectcdrom:Thandle;//弹出光驱
var
thishandle:Thandle;
begin
thishandle:Κgetforegroundwindow();
result:ΚmciSendString(′Setcdaudiodooropenwait′,nil,0,thishandle);
end;
exports ejectcdrom;
functionclosecdrom:Thandle;//关闭光驱
var
thishandle:Thandle;
begin
thishandle:Κgetforegroundwindow();
result:ΚmciSendString(′Setcdaudiodoorclosedwait′,nil,0,thishandle);
end;
exports closecdrom;
functionmovetitle:Thandle;//移动窗体
var
thishandle:Thandle;
begin
thishandle:Κgetforegroundwindow();
result:ΚSendMessage(thishandle,WM-SYSCOMMAND,SC-MOVE+HTCAPTION,0)
end;
exports movetitle;
begin end.
用文本编辑器输入以下文字作为资源文件(一定要注意函数名要和DLL文件中真实函数名相吻合):
DLL-HEADERLOADONCALLDISCARDABLE
BEGIN
″ejectcdromι0″,
″closecdromι0″,
″movetitleι0″,
″ι0″
END
ejectcdromDLL-HEADERLOADONCALLDIS
CARDABLE
BEGIN
″ι0″,
″Lι0″,
″SSι0″,
″result:Κejectcdrom″,
″ιrιnιrιn″,
″弹出光驱,AW5插件,Dephi5制作,作者:徐进″,
″ι0″
END
closecdromDLL-HEADERLOADONCALLDIS
CARDABLE
BEGIN
″ι0″,
″Lι0″,
″SSι0″,
″result:Κclosecdrom″,
″ιrιnιrιn″,
″关闭光驱,AW5插件,Dephi5制作,作者:徐进″,
″ι0″
END
movetitleDLL-HEADERLOADONCALLDIS?CARDABLE
BEGIN
″ι0″,
″Lι0″,
″SSι0″,
″result:Κmovetitle″,
″ιrιnιrιn″,
″移动整个窗体,AW5插件,Dephi5制作,作者:徐进″,
″ι0″
END
将这段文本文件保存为cdrom.rc文件名并放置到Dephi目录下BIN目录中。找到BRCC32.exe文件,用它将该文件编译为CDROM.res资源文件。方法是在开始菜单中的运行中输入“brcc32cdrom.rc”后,回车即可。把cdrom.res复制到刚才的De?phi工程文件中的目录,选择Projects菜单中的rebuildallprojects即可生成DLL文件。将生成的DLL扩展名改为.u32,这个用户代码文档就生成了。启动AW5,单击在函数窗口中的[Load]按钮,引入生成的u32文件,AW5就马上识别出了这三个函数,并带有说明文字。