Développer U32 d'Authorware à l'aide de Delphi
Les fonctions de fonction sont la caractéristique la plus importante de l'auteur. Pour certaines tâches spéciales, Authorware permet aux utilisateurs de définir eux-mêmes les fonctions, ce qui rend la programmation plus flexible. Pour les systèmes Windows, les fonctions personnalisées sont stockées sous forme de fichiers de bibliothèque de liens dynamiques (DLL), de sorte que le fichier qui stocke les fonctions personnalisés est séparé du fichier d'application interactif actuel. Cet article présente comment utiliser Delphi pour développer la fonction personnalisée de l'auteur - 32BITU32. Bien que AuthorwareAtain 5.0 ait fourni la fonction d'utiliser des connaissances de KnowledgeObjects pour afficher Messagebox, cette fonctionnalité n'existe pas dans les versions avant 4.0.
Le développement de U32 peut être divisé en cinq étapes:
Créer des fichiers de projet
Créer une fonction
Créer un fichier de ressources
Compiler les fichiers de ressources
Créer U32
1. Créer des fichiers de projet
Sélectionnez DLL dans le fichier / nouveau pour générer un fichier DLL, ajoutez une unité contenant du code de fonction U32 dans Fichier / AddToproject…. L'utilisateur peut être déclaré dans la fonction d'auteur appelée. Par exemple:
ExportsMsgbox;
Le code final est le suivant:
LibraryAuthorware;
usages
Sysutils, classes,
myunitin'myunit.pas ';
ExportsMsgbox;
Commencer
fin.
2. Créez une fonction
Lorsque vous créez une fonction disponible dans Authorware, vous devez la déclarer en fonction de fonction exportée et ajouter le code après l'interface du mot-clé comme suit:
interface
utilisations, dialogues, sysutils, fenêtres;
functionmsgbox (msg: string; mbType:
Word; Titre: String): Word; export;
Delphi32 doit ajouter {$ ifdefwin32} stdcall;
($ endif} est suivi de la déclaration de fonction comme suit:
functionmsgbox (msg: string; mbType:
Word; Titre: String): Word; export;
{$ ifdefwin32} stdcall; {$ endif}
Maintenant, nous ajoutons du code à la fonction et suivons l'implémentation:
const
Okonly = 0;
Okcancel = 1;
Abortretryignore = 2;
YesNocancel = 3;
Ouino = 4;
RetryCancel = 5;
Critique = 16;
Question = 32;
Excalamation = 48;
Information = 64;
DefaultButton1 = 0;
DefaultButton2 = 256;
DefaultButton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
functionstrtopch (str: string): phar;
Vara: PCHA;
Commencer
a: = stralloc (longueur (str) +1);
Strpcopy (a, str);
Strtopch: = a;
fin;
functionmsgbox (msg: string; mbType:
Word; Titre: String): Word;
Var
Lptext, lpcaption: phar;
H: hwnd;
Commencer
lptext: = strtopch (titre);
lpcaption: = strtopch (msg);
h: = getActiveWindow ();
Msgbox: = messagebox (h, lptext, lpcaption, mbType);
fin;
3. Créer des fichiers de ressources
La dernière chose que nous devons faire est de créer le fichier de ressources afin qu'Authorware puisse appeler directement la fonction. Vous devez d'abord créer le fichier .rc, puis le compiler dans le fichier .res. Utilisez le bloc-notes pour créer un fichier de ressources pour .rc. Ajouter les définitions suivantes: j'expliquerai ces définitions ultérieurement:
1dll_headerpreloaddiscardable
COMMENCER
"Msgbox / 0",
"/ 0"
FIN
msgboxdll_headerpreloaddiscardable
COMMENCER
"/ 0",
"W / 0",
"SWS / 0",
"Résultat: = msgbox (msg, mbtype, titre) / r / n",
"/ r / n",
"ShowMessageBox / 0",
FIN
Si un fichier DLL est écrit dans le format de conversion d'appel des auteurs, le répertoire de toutes les fonctions personnalisés stockés dans celui-ci est également inclus dans le fichier, et les informations requises par Authorware lors de l'appel de ces fonctions sont également incluses, et son répertoire est appelé Source du répertoire et chaque fonction dans la source de répertoire a des définitions correspondantes, et ces définitions sont appelées sources de définition. Le format spécifique est le suivant:
1. Source du répertoire
Le format de la source du répertoire est le suivant:
| Dll_headerpreloaddiscardable
COMMENCER
"functionname [= exportname] / 0",
"functionname [= exportname] / 0",
….
"functionname [= exportname] / 0",
"/ 0"
FIN
① | est l'identifiant de source de répertoire;
②dll_header est la marque de départ utilisée pour créer du texte descriptif;
③Begin indique le début du fichier source du répertoire.
La fin indique la fin de la source du répertoire.
2 Format de définition de la fonction personnalisée
Pour chaque fonction de la source du répertoire, il doit y avoir un format de définition correspondant, le format spécifique est le suivant:
fonctionnamedll_headerpreloaddiscardable
COMMENCER
"dllfilename / 0"
"RetourValue / 0"
«ArgumentList / 0»
"Description>",
"description",
…
"Description / 0"
FIN
① FunctionName fait référence au nom de fonction défini dans la source du répertoire;
②DllFileName représente le nom de fichier DLL de la fonction de stockage;
③ returnValue représente le type de valeur de retour de la fonction;
④ArgumentList représente la liste des types de paramètres dans cette fonction;
⑤Description représente le texte descriptif de la fonction.
Un corps descriptif peut être composé de nombreuses lignes, mais la dernière ligne doit être terminée par le "/ 0".
3 et 3 Format de description du type de paramètre
Les types de paramètres sont représentés par une lettre majuscule, et chaque lettre représente un format de paramètre, comme indiqué dans le tableau suivant:
DESCRIPTION FORMAT Type de format dactylographié
Csignedcharpfarpointer
Chariot
IsignedShortinTegerDouble
Wunsignedshortintegershandle
LSIGNEDLONGINTEGERVVOID
UunsignedLongInteger
4. Compiler les fichiers de ressources
Enregistrez le fichier de ressources de .rc en tant que A3w.rc (notez que le nom du fichier ne peut pas être enregistré et que le nom du fichier DLL ne peut pas être enregistré, sinon le fichier de ressource de Delphi le remplacera). et exécuter en mode DOS:
c: /delphi32/bin/brc32-ra3w.rc - foa3w32.res
Ajoutez maintenant le fichier de ressources au projet, revenez à Delphi dans Affichage / ProJcetsource pour ouvrir le fichier du projet
Exportsmsgbox;
{$ R * .res}
Supprimez la ligne et jointure: {$ ifdefwin32}
{$ Ra3w32.res}
{$ else}
{$ Ra3w16.res}
{$ endif}
Compiler les fichiers du projet.
5. Créer U32
Nous avons créé 32 bits auteur de logiciels et renommés sur authorware.u32.
MSGBOX ("Boîte d'avertissement", 1 + 32 + 0 + 4096, "Quittez-vous ce système?")