Разработать Authorware U32 с помощью Delphi
Функции являются наиболее заметной функцией Authorware. Для некоторых специальных задач Authorware позволяет пользователям сами определять функции, делая программирование более гибким. Для систем Windows пользовательские функции хранятся в виде файлов динамической библиотеки ссылок (DLL), поэтому файл, который хранит пользовательские функции, отделен от текущего интерактивного файла приложения. Эта статья представляет, как использовать Delphi для разработки пользовательской функции Authorware - 32Bitu32. Хотя Authorwareattain 5.0 предоставил функцию использования знаний для отображения Messagebox, эта функция не существует в версиях до 4.0.
Разработка U32 можно разделить на пять шагов:
Создать файлы проекта
Создать функцию
Создать файл ресурса
Скомпилируйте файлы ресурсов
Создать U32
1. Создать файлы проекта
Выберите DLL в File/New, чтобы сгенерировать файл DLL, добавьте устройство, содержащее функциональный код U32 в файле/AddToProject…. Пользователь может быть объявлен в функции Authorware Call In. Например:
ExportSmsgbox;
Окончательный код заключается в следующем:
Библиотека
Использование
Sysutils, классы,
myunitin'myunit.pas ';
ExportSmsgbox;
Начинать
конец.
2. Создать функцию
Когда вы создаете функцию, доступную в Authorware, вы должны объявить ее экспортируемой функцией и добавить код после интерфейса ключевого слова следующим образом:
интерфейс
Использование, диалоги, Sysutils, Windows;
functionMsgbox (msg: string; mbtype:
Слово; заголовок: строка): слово; экспорт;
Delphi32 должен добавить {$ ifdefwin32} stdcall;
($ endif} сопровождается объявлением функции следующим образом:
functionMsgbox (msg: string; mbtype:
Слово; заголовок: строка): слово; экспорт;
{$ ifdefwin32} stdcall; {$ endif}
Теперь мы добавляем код в функцию и следуем реализации:
констант
Okonly = 0;
Okcancel = 1;
AbortryTryGenore = 2;
Yesnocancel = 3;
Yesno = 4;
Retrycancel = 5;
Критическое = 16;
Вопрос = 32;
Эскаламация = 48;
Информация = 64;
Defaultbutton1 = 0;
Defaultbutton2 = 256;
Defaultbutton3 = 512;
ApplicationModal = 0;
SystemModal = 4096;
functionstrtopch (str: string): pchar;
Vara: pchar;
Начинать
a: = stralloc (длина (str) +1);
Strpcopy (a, str);
Strtopch: = a;
конец;
functionMsgbox (msg: string; mbtype:
Слово;
Вар
LPText, LPCaption: pchar;
H: hwnd;
Начинать
LPText: = strtopch (заголовок);
LPCaption: = strtopch (MSG);
h: = getactivewindow ();
Msgbox: = messagebox (h, lptext, lpcaption, mbtype);
конец;
3. Создание файлов ресурсов
Последнее, что нам нужно сделать, это создать файл ресурса, чтобы Authorware могла вызовать функцию напрямую. Сначала вы должны создать файл .rc, а затем собрать его в файл .res. Используйте блокнот, чтобы создать файл ресурса для .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 при вызове этих функций, также включена, а его каталог называется источником каталога и каждая функция в источнике каталога имеет соответствующие определения, и эти определения называются источниками определения. Конкретный формат заключается в следующем:
1. Источник каталога
Формат источника каталога заключается в следующем:
| Dll_headerpeloaddiscardable
НАЧИНАТЬ
"functionName [= exportName]/0",
"functionName [= exportName]/0",
…
"functionName [= exportName]/0",
«/0»
КОНЕЦ
① | - идентификатор источника каталогов;
②dll_header - это начальная оценка, используемая для создания описательного текста;
③begin Указывает начало исходного файла каталога.
Конец указывает на конец источника каталога.
2 Пользовательский формат определения функции
Для каждой функции в источнике каталога должен быть соответствующий формат определения, конкретный формат заключается в следующем:
functionnamedll_headerpreloaddiscardable
НАЧИНАТЬ
"dllfilEname/0"
«ReturnValue/0»
«Аргументный список/0»
«Описание>»,
"описание",
…
"Описание/0"
КОНЕЦ
① Функциональное имя относится к имени функции, определенным в источнике каталога;
②dllfilename представляет имя файла DLL функции хранения;
③ returnValue представляет тип возвращаемого значения функции;
④argumentList представляет список типов параметров в этой функции;
⑤description представляет описательный текст функции.
Описательное тело может быть составлено из многих строк, но последняя строка должна быть закончена «/0».
3 Параметр Тип Описание Формат
Типы параметров представлены заглавной буквой, и каждая буква представляет собой формат параметров, как показано в следующей таблице:
Описание формат typedEscribe Тип формата
CSignedCharpfarPointer
BunSignedCharffloat
ISignedShortIntegerDdouble
Wunsignedshortintegershandle
Lsignedlongintegervvoid
Uunsignedlonginteger
4. Скомпилируйте файлы ресурсов
Сохраните файл ресурса .rc как a3w.rc (обратите внимание, что имя файла не может быть сохранено, и имя файла DLL не может быть сохранено, в противном случае файл ресурса Delphi будет перезаписать его). и запустить в режиме DOS:
c: /delphi32/bin/brc32-r3w.rc-foa3w32.res
Теперь добавьте файл ресурса в проект, вернитесь в Delphi в View/ProjcetSource, чтобы открыть файл проекта
ExportSMSGBOX;
{$ R*.res}
Удалить строку и присоединиться: {$ ifdefwin32}
{$ Ra3w32.res}
{$ else}
{$ Ra3w16.res}
{$ endif}
Скомпилируйте файлы проекта.
5. Создать U32
Мы создали 32 -битную Authorware.dll и переименовали его в Authorware.u32.
Msgbox («Box», 1+32+0+4096, "Вы выходите из этой системы?")