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就馬上識別出了這三個函數,并帶有說明文字。
新聞熱點
疑難解答