Entwickeln Sie die U32 von Authorware mit Delphi
Funktionsfunktionen sind die bekannteste Funktion von Authorware. Für einige spezielle Aufgaben ermöglicht es Authorware, Funktionen selbst zu definieren und die Programmierung flexibler zu machen. Für Windows -Systeme werden benutzerdefinierte Funktionen als DLL -Dateien (Dynamic Link Library) gespeichert, sodass die Datei, die benutzerdefinierte Funktionen speichert, von der aktuellen interaktiven Anwendungsdatei getrennt ist. In diesem Artikel werden Delphi zur Entwicklung der benutzerdefinierten Funktion von Authorware vorgestellt - 32bitu32. Obwohl AuthorWareatTain 5.0 die Funktion der Verwendung von Knowledgejects zur Anzeige von MessageBox vorgelegt hat, gibt es in Versionen vor 4.0 nicht.
Die Entwicklung von U32 kann in fünf Schritte unterteilt werden:
Projektdateien erstellen
Eine Funktion erstellen
Erstellen Sie eine Ressourcendatei
Ressourcendateien kompilieren
U32 erstellen
1. Erstellen Sie Projektdateien
Wählen Sie DLL in Datei/neu, um eine DLL -Datei zu generieren, und fügen Sie ein Gerät mit dem U32 -Funktionscode in Datei/Addtoproject hinzu. Der Benutzer kann in Authorware -Funktion deklariert werden. Zum Beispiel:
Exportssgbox;
Der endgültige Code lautet wie folgt:
LibraryAuthorware;
Verwendung
Systeme, Klassen,
MyUnitin'myUnit.pas ';
Exportssgbox;
Beginnen
Ende.
2. Erstellen Sie eine Funktion
Wenn Sie eine Funktion erstellen, die in Authorware verfügbar ist, müssen Sie sie als exportierte Funktion deklarieren und den Code nach der Keyword -Schnittstelle wie folgt hinzufügen:
Schnittstelle
Verwendung, Dialoge, Systeme, Fenster;
functionMSGBox (MSG: String; MbType:
Wort; Titel: String): Wort; Export;
DelPhi32 muss {$ ifdefwin32} stdcall hinzufügen;
($ endif} folgt die Funktionserklärung wie folgt:
functionMSGBox (MSG: String; MbType:
Wort; Titel: String): Wort; Export;
{$ ifdefwin32} stdcall; {$ endif}
Jetzt fügen wir der Funktion Code hinzu und folgen der Implementierung:
Const
Wirklich = 0;
Okcancel = 1;
Abortryrinesignore = 2;
Yesnocancel = 3;
JaNo = 4;
RYRYCancel = 5;
Kritisch = 16;
Frage = 32;
Excalamation = 48;
Informationen = 64;
StandardButton1 = 0;
StandardButton2 = 256;
StandardButton3 = 512;
ApplicationModal = 0;
Systemmodal = 4096;
FunktionenStrtopch (str: String): pchar;
vara: pchar;
Beginnen
a: = stralloc (Länge (str) +1);
Strpcopy (a, str);
Strtopch: = a;
Ende;
functionMSGBox (MSG: String; MbType:
Wort;
Var
Lptext, lpCaption: pchar;
H: hwnd;
Beginnen
lptext: = strtopch (title);
LPCaption: = Strtopch (MSG);
H: = getActiveWindow ();
MSGBox: = MessageBox (h, lptext, lpCaption, mbType);
Ende;
3. Erstellen Sie Ressourcendateien
Das Letzte, was wir tun müssen, ist die Ressourcendatei zu erstellen, damit Authorware die Funktion direkt aufrufen kann. Sie müssen zuerst die .rc -Datei erstellen und dann in die .res -Datei kompilieren. Verwenden Sie Notepad, um eine Ressourcendatei für .rc zu erstellen. Fügen Sie die folgenden Definitionen hinzu: Ich werde diese Definitionen später erklären:
1Dll_HeaderPreloadDiscardable
BEGINNEN
"Msgbox/0",
"/0"
ENDE
MSGBOXDLL_HeaderPreloadDiscardable
BEGINNEN
"/0",
"W/0",
"SWS/0",
"Ergebnis: = msgbox (msg, mbType, title)/r/n",
"/r/n",
"ShowMessageBox/0",
ENDE
Wenn eine DLL -Datei im Authorware -Call Conversion -Format geschrieben ist, ist das Verzeichnis aller darin gespeicherten benutzerdefinierten Funktionen ebenfalls in der Datei enthalten, und die von Authorware geforderten Informationen beim Aufrufen dieser Funktionen werden ebenfalls enthalten, und das Verzeichnis wird als Verzeichnisquelle bezeichnet und jede Funktion in der Verzeichnisquelle hat entsprechende Definitionen, und diese Definitionen werden als Definitionsquellen bezeichnet. Das spezifische Format lautet wie folgt:
1. Verzeichnisquelle
Das Format der Verzeichnisquelle lautet wie folgt:
| DLL_HeaderPreloadDiscardable
BEGINNEN
"FunktionName [= Exportname]/0",
"FunktionName [= Exportname]/0",
….
"FunktionName [= Exportname]/0",
"/0"
ENDE
① | ist die Verzeichnisquellenkennung;
②Dll_Header ist die Startmarke, mit der der beschreibende Text erstellt wird.
③Begin gibt den Beginn der Quelldatei des Verzeichnisses an.
Das Ende gibt das Ende der Verzeichnisquelle an.
2. Format für benutzerdefinierte Funktionsdefinition
Für jede Funktion in der Verzeichnisquelle muss es ein entsprechendes Definitionsformat geben. Das spezifische Format lautet wie folgt:
FunktionNamedll_HeaderPreloadDiscardable
BEGINNEN
"dllFileName/0"
"ReturnValue/0"
"ArgumentList/0"
"Beschreibung>",
"Beschreibung",
…
"Beschreibung/0"
ENDE
① FunktionName bezieht sich auf den in der Verzeichnisquelle definierten Funktionsnamen.
②DllFileName repräsentiert den DLL -Dateinamen der Speicherfunktion.
③ returnValue repräsentiert den Rückgabewerttyp der Funktion;
④argumentList repräsentiert die Liste der Parametertypen in dieser Funktion;
⑤Description repräsentiert den beschreibenden Text der Funktion.
Ein beschreibender Körper kann aus vielen Zeilen bestehen, aber die letzte Zeile muss mit dem "/0" beendet werden.
3. Parameter Typ Beschreibung Format
Die Parametertypen werden durch einen Großbuchstaben dargestellt, und jeder Buchstaben stellt ein Parameterformat dar, wie in der folgenden Tabelle gezeigt:
Beschreibung Format Typedescribe Formattyp
CSignedCharPfarpointer
BunSignedCharffloat
IssignedshortIntegerdouble
Wunsignedshortintegerhandle
LSIGNEDLONGINTEgervvoid
UunsignedLonginteger
4. Kompilieren Sie Ressourcendateien
Speichern Sie die Ressourcendatei von .RC als A3W.rc (Beachten Sie, dass der Dateiname nicht gespeichert werden kann und der DLL -Dateiname nicht gespeichert werden kann, andernfalls überschreibt die Ressourcendatei von Delphi sie). und im DOS -Modus laufen:
C: /delphi32/bin/brc32-ra3w.rc-foa3w32.res
Fügen Sie nun die Ressourcendatei zum Projekt hinzu und kehren Sie in Ansicht/ProjcetSource zu Delphi zurück, um die Projektdatei zu öffnen
exportsmsgbox;
{$ R*.res}
Löschen Sie die Zeile und schließen Sie sich an: {$ ifdefwin32}
{$ Ra3w32.res}
{$ sonst}
{$ Ra3w16.res}
{$ endif}
Projektdateien kompilieren.
5. U32 erstellen
Wir haben 32 -Bit -Autorware erstellt und in Authorware umbenannt.
MSGBox ("Warnbox", 1+32+0+4096, "Verluste Sie dieses System?")