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-headerloadoncalldiscardable
begin
″ι0″,
″lι0″,
″ssι0″,
″result:κejectcdrom″,
″ιrιnιrιn″,
″弹出光驱,aw5插件,dephi5制作,作者:徐进″,
″ι0″
end
closecdromdll-headerloadoncalldiscardable
begin
″ι0″,
″lι0″,
″ssι0″,
″result:κclosecdrom″,
″ιrιnιrιn″,
″关闭光驱,aw5插件,dephi5制作,作者:徐进″,
″ι0″
end
movetitledll-headerloadoncalldiscardable
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复制到刚才的dephi工程文件中的目录,选择projects菜单中的rebuildallprojects即可生成dll文件。将生成的dll扩展名改为.u32,这个用户代码文档就生成了。启动aw5,单击在函数窗口中的[load]按钮,引入生成的u32文件,aw5就马上识别出了这三个函数,并带有说明文字。
新闻热点
疑难解答