Desenvolva o U32 da Authorware usando Delphi
As funções da função são o recurso mais proeminente da autorware. Para algumas tarefas especiais, o Authorware permite que os usuários definam funções, tornando a programação mais flexível. Para os sistemas Windows, as funções personalizadas são armazenadas como arquivos Dynamic Link Library (DLL); portanto, o arquivo que armazena funções personalizadas é separado do arquivo de aplicativo interativo atual. Este artigo apresenta como usar o Delphi para desenvolver a função personalizada da Authorware - 32BITU32. Embora o AuthorWareattain 5.0 tenha fornecido a função de usar o conhecimento dos objetos para exibir o MessageBox, esse recurso não existe nas versões antes do 4.0.
O desenvolvimento de U32 pode ser dividido em cinco etapas:
Criar arquivos de projeto
Criar uma função
Crie um arquivo de recurso
Compilar arquivos de recursos
Crie U32
1. Crie arquivos de projeto
Selecione DLL no arquivo/novo para gerar um arquivo DLL, adicione uma unidade contendo código de função U32 no arquivo/addTOProject…. O usuário pode ser declarado na função Authorware chamado. Por exemplo:
exportsmsgbox;
O código final é o seguinte:
Bibliotecionista de Bibliotecas;
usos
Sysutils, aulas,
myunitin'myunit.pas ';
exportsmsgbox;
Começar
fim.
2. Crie uma função
Quando você cria uma função disponível em autorware, você deve declará -la como função exportada e adicionar o código após a interface da palavra -chave da seguinte forma:
interface
usos, diálogos, sysutils, janelas;
functionMSGBox (msg: string; mbtype:
Palavra; título: string): word; export;
Delphi32 precisa adicionar {$ ifdefwin32} stdcall;
($ endif} é seguido pela declaração da função da seguinte forma:
functionMSGBox (msg: string; mbtype:
Palavra; título: string): word; export;
{$ ifdefwin32} stdcall; {$ endif}
Agora adicionamos código à função e seguimos a implementação:
const
Okonly = 0;
Okcancel = 1;
Abortretryignore = 2;
Yesnocancel = 3;
Simno = 4;
RETRYCANCEL = 5;
Crítico = 16;
Pergunta = 32;
Excalamação = 48;
Informação = 64;
DefaultButton1 = 0;
DefaultButton2 = 256;
DefaultButton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
funçõestrtopch (str: string): pchar;
Vara: PChar;
Começar
a: = stralloc (comprimento (str) +1);
Strpcopy (a, str);
Strtopch: = a;
fim;
functionMSGBox (msg: string; mbtype:
Palavra;
Var
LPTEXT, LPCAPTION: PCHAR;
h: hwnd;
Começar
lpText: = strtopch (título);
LPCAPTION: = STRTOPCH (MSG);
h: = fetactiveWindow ();
MsgBox: = MessageBox (h, lpText, lpcaption, mbtype);
fim;
3. Crie arquivos de recursos
A última coisa que precisamos fazer é criar o arquivo de recursos para que o autorware possa chamar a função diretamente. Você deve primeiro criar o arquivo .rc e depois compilá -lo no arquivo .res. Use o bloco de notas para criar um arquivo de recurso para .rc. Adicione as seguintes definições: explicarei essas definições mais tarde:
1DLL_HEADERPRELOADDISCARDABLE
COMEÇAR
"Msgbox/0",
"/0"
FIM
MSGBOXDLL_HEADERPRELOADDISCARDABLE
COMEÇAR
"/0",
"W/0",
"SWS/0",
"Resultado: = msgbox (msg, mbtype, título)/r/n",
"/r/n",
"ShowMessageBox/0",
FIM
Se um arquivo DLL for escrito no formato de conversão de chamadas de autores, o diretório de todas as funções personalizadas armazenadas nele também está incluído no arquivo e as informações exigidas pela Authorware ao chamar essas funções também serão incluídas, e seu diretório é chamado de fonte de diretório e cada função na fonte de diretório possui definições correspondentes, e essas definições são chamadas de fontes de definição. O formato específico é o seguinte:
1. Fonte de diretório
O formato da fonte do diretório é o seguinte:
| DLL_HEADERPRELOADDISCARDABLE
COMEÇAR
"FunctionName [= exportName]/0",
"FunctionName [= exportName]/0",
….
"FunctionName [= exportName]/0",
"/0"
FIM
① | é o identificador de fonte de diretório;
②dll_header é a marca de partida usada para criar texto descritivo;
③Begin Indica o início do arquivo de origem do diretório.
O final indica o final da fonte do diretório.
2. Formato de definição de função personalizada
Para cada função na fonte do diretório, deve haver um formato de definição correspondente, o formato específico é o seguinte:
FunctionNamedll_HeaderPreloadDiscardable
COMEÇAR
"Dllfilename/0"
“ReturnValue/0”
“ArgumentList/0”
"Descrição>",
"descrição",
...
"Descrição/0"
FIM
① FunctionName refere -se ao nome da função definido na fonte do diretório;
②dllfilename representa o nome do arquivo DLL da função de armazenamento;
③ ReturnValue representa o tipo de valor de retorno da função;
④argumentList representa a lista de tipos de parâmetros nesta função;
⑤Description representa o texto descritivo da função.
Um corpo descritivo pode ser composto de muitas linhas, mas a última linha deve ser encerrada com o "/0".
3. Tipo de parâmetro Descrição formato
Os tipos de parâmetros são representados por uma letra maiúscula e cada letra representa um formato de parâmetro, como mostrado na tabela a seguir:
Descrição Formato Tipedescribe Format Type
CSignedcharpFarPointer
Bunsignedcharffloat
Isignedshortintegerddouble
WunsignedshortintegersHandle
LSIGNEDLONGINTEGERVOid
UunsignedlongInteger
4. Compilar arquivos de recursos
Salvar o arquivo de recursos do .rc como a3w.rc (observe que o nome do arquivo não pode ser salvo e o nome do arquivo DLL não pode ser salvo, caso contrário, o arquivo de recurso do Delphi o substituirá). e execute no modo DOS:
c: /delphi32/bin/brc32-ra3w.rc-foa3w32.res
Agora adicione o arquivo de recursos ao projeto, retorne a Delphi em View/Projcetsource para abrir o arquivo do projeto
exportsmsgbox;
{$ R*.res}
Exclua a linha e junte -se: {$ ifdefwin32}
{$ Ra3w32.res}
{$ else}
{$ Ra3w16.res}
{$ endif}
Compilar arquivos de projeto.
5. Crie U32
Criamos o 32Bit Authorware.dll e o renomeou para o Authorware.u32.
Msgbox ("caixa de aviso", 1+32+0+4096, "você sai deste sistema?")