Delphiを使用してAuthorwareのU32を開発します
関数関数は、作成者ウェアによって提供されるシステム機能の最も顕著な機能です。いくつかの特別なタスクでは、Authorwareを使用すると、ユーザーは自分自身で機能を定義し、プログラミングをより柔軟にします。 Windowsシステムの場合、カスタム関数は動的リンクライブラリ(DLL)ファイルとして保存されるため、カスタム関数を保存するファイルは現在のインタラクティブアプリケーションファイルから分離されます。この記事では、Delphiを使用してAuthorwareのカスタム関数を開発する方法を紹介します。 AuthorWareAttain 5.0は、knownetyObjectsを使用してメッセージボックスを表示する機能を提供していますが、この機能は4.0以前にバージョンに存在しません。
U32の開発は、5つのステップに分割できます。
プロジェクトファイルを作成します
関数を作成します
リソースファイルを作成します
リソースファイルをコンパイルします
U32を作成します
1.プロジェクトファイルを作成します
ファイルでDLLを選択して、DLLファイルを生成するには、ファイル/addToproject.pasにU32関数コードを含むユニットを追加します(このユニットは、使用後の2番目のステップで詳細に説明されています)。ユーザーは、incallware関数で宣言できます。例えば:
ExportSMSGBOX;
最終コードは次のとおりです。
LibraryAuthorware;
用途
sysutils、classes、
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;
yesnocancel = 3;
yesno = 4;
retrycancel = 5;
クリティカル= 16;
質問= 32;
excalamation = 48;
情報= 64;
DefaultButton1 = 0;
DefaultButton2 = 256;
DefaultButton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
functionsstrtopch(str:string):pchar;
VARA:PCHAR;
始める
a:= stralloc(length(str)+1);
strpcopy(a、str);
strtopch:= a;
終わり;
functionmsgbox(msg:string; mbtype:
単語:文字列):Word;
var
lptext、lpcaption:pchar;
H:hwnd;
始める
lptext:= strtopch(title);
lpcaption:= strtopch(msg);
H:= getActiveWindow();
msgbox:= messagebox(h、lptext、lpcaption、mbtype);
終わり;
3.リソースファイルを作成します
最後にしなければならないことは、Authrewareが関数を直接呼び出すことができるようにリソースファイルを作成することです。最初に.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 Conversion Formatに記述されている場合、ITに保存されているすべてのカスタム関数のディレクトリもファイルに含まれており、これらの関数を呼び出す際にAuthorwareが必要とする情報も含まれ、そのディレクトリはディレクトリソースと呼ばれます。 、およびディレクトリソースの各関数には対応する定義があり、これらの定義は定義ソースと呼ばれます。特定の形式は次のとおりです。
1。ディレクトリソース
ディレクトリソースの形式は次のとおりです。
| dll_headerpreloaddiscardable
始める
「functionname [= exportname]/0」、
「functionname [= exportname]/0」、
…。
「functionname [= exportname]/0」、
「/0」
終わり
①|はディレクトリソース識別子です。
②dll_headerは、説明的なテキストを作成するために使用されるスタートマークです。
Beginは、ディレクトリのソースファイルの開始を示します。
ENDは、ディレクトリソースの端を示します。
2。カスタム関数定義形式
ディレクトリソースの各関数について、対応する定義形式が必要です。特定の形式は次のとおりです。
functionnamedll_headerpreloaddiscardable
始める
「dllfilename/0」
「ReturnValue/0」
「argumentlist/0」
「説明>」、
"説明"、
…
「説明/0」
終わり
functionNameは、ディレクトリソースで定義されている関数名を指します。
②dllfileNameは、ストレージ関数のDLLファイル名を表します。
③returnValueは、関数の返品値タイプを表します。
ArgumentListは、この関数のパラメータータイプリストを表します。
desscriptionは、関数の記述テキストを表します。
記述本体は多くの線で構成できますが、最後の線は「/0」で終了する必要があります。
3。パラメータータイプ説明形式
パラメータータイプは大文字で表され、次の表に示すように、各文字はパラメーター形式を表します。
説明フォーマットtypedescribeフォーマットタイプ
csignedcharpfarpointer
BunsignedCharffloat
isignedshortintegerddouble
wunsignedshortintegershandle
lsignedlongintegervvoid
uunsignedlonginteger
4.リソースファイルをコンパイルします
.rcのリソースファイルをA3W.RCとして保存します(ファイル名を保存できず、DLLファイル名を保存できません。 DOSモードで実行:
c:/delphi32/bin/brc32-ra3w.rc – foa3w32.res
リソースファイルをプロジェクトに追加するには、View/ProjcetSourceでDelphiに戻り、プロジェクトファイルを開きます
exportsmsgbox;
{$ r*.res}
行を削除して結合します:{$ ifdefwin32}
{$ ra3w32.res}
{$ else}
{$ ra3w16.res}
{$ endif}
プロジェクトファイルをコンパイルします。
5。U32を作成します
32ビットAulterware.dllを作成し、Autherware.u32に変更しました。
msgbox(「警告ボックス」、1+32+0+4096、「このシステムを終了しますか?」)