В качество ответа на целый круг вопросов, я включил в свой ответ два файла:
aaplay1.inc - include-файл с интерфейсом для библиотеки aaplay.dll
aaplay1.pas - сырой скелет компонента для проигрывания FLIC-анимации
Я
разработал это глядя на другой компонент (это был полнофункциональный плейер,
работающий как форма), и вынужден был сохранить некоторые вещи неприкосновенными
(попробуй тут сделай иначе :-)
Для работы вам понадобится библиотека aaplay.dll от Autodesk, которую вы
можете найти на множестве мест (например, я так предполагаю, на Encarta CD). Для
полного счастья вы можете обратиться к файлу помощи для Animation Player for
Windows, который, не удивляйтесь, содержит справку для этой DLL - на первой
странице найдите в ее самой нижней части указание на эту библиотеку, и перед
вами предстанет полная справка по вызовам этой самой DLL.
Надеюсь что помог вам. . .
ВНИМАНИЕ! Это мой первый код, написанный для Windows (спасибо Delphi),
поэтому он рекомендуется только для ознакомления.
{ ============================================================================ }{ aaplay1.inc }{ (c) P W Kuczora }{ 17-го апреля 1995 }{ Заголовочный файл, содержащий константы и определения типов для aaplay1.pas }const
NULL = 0;
NULLPTR = ^0;
{
Доступные Флаги wMode: integer;
Используются в aaLoad, aaReLoad
Первые восемь бит wMode используются в aa_flags.
}
AA_MEMORYLOAD = $1; { Загрузка в память }
AA_HIDEWINDOW = $2; { Скрывать окно анимации }
AA_NOPALETTE = $4 ; { Анимация без палитры }
AA_RESERVEPALETTE = $8; { Резервировать при старте всю палитру }
AA_LOOPFRAME = $10; { Циклическая загрузка кадров }
AA_FULLSCREEN = $20; { Использовать полноэкранный режим воспроизведения }
AA_STOPNOTIFY = $40; { Исключать любые уведомляющие сообщения }
AA_STOPSTATUS = $80; { Исключать сообщения об изменении статуса }
AA_NOFAIL = $100; { Уменьшение типа нагрузки при ошибке }
AA_DONTPAINT = $200; { Не делать paByVal-анимацию при загрузке }
AA_BUILDSCRIPT = $400; { lpzFileName - скрипт, не имя }
AA_ALLMODES = $FF;
{
Доступные флаги для режимов звука - wMode: integer;
Используются в aaSound
}
AA_SNDFREEZE = $1; { Заморозка кадров при проигрывании звуков }
AA_SNDDEVICEID = $100; { ID устройства, не имя }
AA_SNDBUILDALIAS = $200; { создавать псевдоним звукового устройства }{
aaNotify позволяет извещать приложение о проигрывании определенных
кадров.
lPosition - позиция, на которой должно происходить уведомление.
wParam для этого сообщения - hAa, а lParam копируется из этого вызова.
При установке сообщения возвращается TRUE.
Следующее значение определяет необходимость завершения цикла анимации
по окончании проигрывания звука. Если звук отсутствует, анимация
зацикливается навсегда.
}
AA_LOOPSOUND = $FFFF;
{
Автоматическое уведомление посылается при перезагрузке в скрипте
анимации.
lParam для этого сообщения определен ниже
}
AA_ANIMATIONLOADED = 0;
{
Типы параметров
Используется с aaGetParm и aaSetParm.
}
AA_STATUS = 1; { Получить текущий статус }
AA_FILETYPE = 2; { Получить тип анимации на диске }
AA_MODE = 3; { Получить/установить флаги анимации }
AA_WINDOW = 4; { Установить/получить окно анимации }
AA_SPEED = 5; { Установить/получить текущую скорость }
AA_DESIGNSPEED = 6; { Получить скорость на этапе дизайна }
AA_FRAMES = 7; { Получить число кадров }
AA_POSITION = 8; { Установить/получить позицию текущего кадра }
AA_LOOPS = 9; { Установить/получить число циклов }
AA_X = 10; { Установить/получить позицию выводимого окна }
AA_Y = 11; { Установить/получить позицию выводимого окна }
AA_CX = 12; { Установить/получить размеры выводимого окна }
AA_CY = 13; { Установить/получить размеры выводимого окна }
AA_ORGX = 14; { Установить/получить начало выводимого окна }
AA_ORGY = 15; { Установить/получить начало выводимого окна }
AA_WIDTH = 16; { Получить ширину анимации }
AA_HEIGHT = 17; { Получить высоту анимации }
AA_RPTSOUND = 18; { Установить/получить повторения звуков }
AA_PAUSE = 19; { Установить/получить время паузы }
AA_DELAYSND = 20; { Установить/получить время задержки звука }
AA_TRANSIN = 21; { Установить/получить тип входного перехода }
AA_TRANSOUT = 22; { Установить/получить тип выходного перехода }
AA_TIMEIN = 23; { Установить/получить время входного перехода }
AA_TIMEOUT = 24; { Установить/получить время выходного перехода }
AA_CALLBACK = 25; { Установить/получить окно обратного вызова }
AA_ANIMWND = 26; { Получить дескриптор окна анимации }
AA_MODFLAG = 100; { Установить/получить флаг изменения скрипта }
AA_SCRIPTNAME = 101; { Установить/получить имя скрипта }
AA_ANIMATION = 102; { Получить/установить скрипт анимации }
AA_ANIMATIONCOUNT = 103; { Получить счетчик скрипта анимации }
AA_SCRIPTCONTENTS = 104; { Получить содержание скрипта }
AA_LASTERROR = 1001; { Получить код последней ошибки }
AA_LASTERRORMESSAGE = 1002; { Получить/установить сообщение о последней ошибке }{
Типы параметров
Используется с aaSetParmIndirect
}
AA_SETMODE = $1; { Получить/установить флаги анимации }
AA_SETWINDOW = $2; { Установить/получить окно анимации }
AA_SETSPEED = $4; { Установить/получить текущую скорость }
AA_SETPOSITION = $8; { Установить/получить позицию текущего кадра }
AA_SETLOOPS = $10; { Установить/получить число циклов }
AA_SETX = $20; { Установить/получить левую координату выводимого окна }
AA_SETY = $40; { Установить/получить левую координату выводимого окна }
AA_SETCX = $80; { Установить/получить верхнюю координату выводимого окна }
AA_SETCY = $100; { Установить/получить верхнюю координату выводимого окна }
AA_SETORGX = $200; { Установить/получить ширину выводимого окна }
AA_SETORGY = $400; { Установить/получить ширину выводимого окна }
AA_SETRPTSOUND = $800; { Установить/получить повторения звуков }
AA_SETPAUSE = $1000; { Установить/получить время паузы }
AA_SETDELAYSND = $2000; { Установить/получить время задержки звука }
AA_SETTRANSIN = $4000; { Установить/получить тип входного перехода }
AA_SETTRANSOUT = $8000; { Установить/получить тип выходного перехода }
AA_SETTIMEIN = $10000; { Установить/получить время входного перехода }
AA_SETTIMEOUT = $20000; { Установить/получить время выходного перехода }
AA_SETCALLBACK = $40000; { Установить/получить окно обратного вызова }
AA_ALL = $FFFFFFFF; { Получить/установить все параметры }{
Значения статуса для анимации
}
AA_STOPPED = 1; { Загружена, но не воспроизводится }
AA_QUEUED = 2; { Анимация ожидает воспроизведение }
AA_PLAYING = 3; { Анимация воспроизводится }
AA_PAUSED = 4; { Анимация в режиме паузы }
AA_DONE = 5; { Анимация закончила воспроизведение }{ и ожидает вызов aaStop }{
Определения типов файла
}
AA_FLI = $1; { Формат Autodesk Animator Fli }
AA_DIB = $2; { Формат Windows DIB }
AA_NUMTYPES = $2; { Количество типов }
AA_SCRIPT = $3; { Скрипт без анимации }{
Типы переходов
}
AA_CUT = 0; { Простая остановка одной и запуск другой }
AA_FADEBLACK = $1; { Уход/выход из черного }
AA_FADEWHITE = $2; { Уход/выход из белого }{
Коды ошибок, возвращаемые aaGetParm(xxx, AA_LASTERROR)
}
AA_ERR_NOERROR = 0; { Неизвестная ошибка }
AA_ERR_NOMEMORY = $100; { 256 - Ошибка нехватки памяти }
AA_ERR_BADHANDLE = $101; { 257 - Плохой дескриптор }
AA_ERR_NOTIMERS = $102; { 258 - Невозможно запустить таймер }
AA_ERR_BADSOUND = $103; { 259 - Плохое звуковое сопровождение }
AA_ERR_NOSCRIPT = $104; { 260 - Требуется скрипт }
AA_ERR_WRITEERR = $105; { 261 - Ошибка записи (для сценария) }
AA_ERR_BADANIMATION = $106; { 262 - Невозможно открыть анимацию }
AA_ERR_BADWINDOWHANDLE = $200; { 512 - Плохой дескриптор окна }
AA_ERR_WINDOWCREATE = $201; { 513 - Невозможно создать окно }
AA_ERR_DLGERROR = $202; { 514 - Ошибка диалога }
AA_ERR_INVALIDSTATUS = $300; { 768 - Неверный статус }
AA_ERR_BADDIBFORMAT = $301; { 769 - Плохой dib-файл }
AA_ERR_BADFLIFORMAT = $302; { 770 - Плохой fli-файл }
AA_ERR_UNRECOGNIZEDFORMAT = $303; { 771 - Нераспознанный формат }
AA_ERR_NOSOUND = $304; { 772 - Звук не поддерживается }
AA_ERR_NOTVALIDFORSCRIPTS = $305; { 773 - Неправильный сценарий }
AA_ERR_INVALIDFILE = $306; { 774 - Плохой дескриптор файла }
AA_ERR_NOSCRIPTS = $307; { 775 - Нет файлов-скриптов }
AA_ERR_SPEED = $400; { 1024 - Неверная скорость }
AA_ERR_LOOPS = $401; { 1025 - Неверные циклы }
AA_ERR_RPTSOUND = $402; { 1026 - Неверный повтор звука }
AA_ERR_PAUSE = $403; { 1027 - Неверная пауза }
AA_ERR_TRANSIN = $404; { 1028 - Неверный переход }
AA_ERR_TIMEIN = $405; { 1029 - Неверный переход }
AA_ERR_TRANSOUT = $406; { 1030 - Неверное время перехода }
AA_ERR_TIMEOUT = $407; { 1031 - Неверное время перехода }
AA_ERR_DELAYSND = $408; { 1032 - Неверная задержка звука }
AA_ERR_INVALIDTYPE = $409; { 1033 - Неверный тип параметра }
AA_ERR_DUPLICATENOTIFY = $500; { 1280 - Дублирование уведомления }
AA_ERR_NOSWITCH = $600; { 1536 - Отсутствие ключей в скрипте }
AA_ERR_PARSELOOPS = $601; { 1537 - Плохие циклы в скрипте }
AA_ERR_PARSESPEED = $602; { 1538 - Плохая скорость в скрипте }
AA_ERR_BADRPTSOUND = $603; { 1539 - Плохое повторение звука в скрипте }
AA_ERR_PARSEPAUSE = $604; { 1540 - Плохая пауза в скрипте }
AA_ERR_PARSETRANS = $605; { 1541 - Плохой переход в скрипте }
AA_ERR_PARSEDELAYSND = $606; { 1542 - Плохая задержка звука в скрипте }
AA_ERR_TOOMANYLINKS = $607; { 1543 - Слишком много ссылок }{
dwFlags: integer; может быть любым из нижеперечисленных
Используется в aaGetFile.
}
AA_GETFILE_MUSTEXIST = $1;
AA_GETFILE_NOSHOWSPEC = $2;
AA_GETFILE_SAVE = $4;
AA_GETFILE_OPEN = $8;
AA_GETFILE_USEDIR = $10;
AA_GETFILE_USEFILE = $20;
AA_GETFILE_SOUND = $40;
AA_GETFILE_SCRIPT = $80;
AA_GETFILE_ANIMATION = $100;
{
wMode: integer; Значения
Используется в aaSave
}
AA_SAVE_IFMODIFIED = $1;
AA_SAVE_AS = $2;
AA_SAVE_CANCEL = $4;
{
Возможности
Используется в aaGetCaps
}
AA_CAP_TIMER = 1;
AA_CAP_SOUND = 2;
AA_CAP_SCRIPT = 3;
{
Статусные сообщения анимации
Используйте RegisterWindowMessage для получения номеров реальных сообщений.
}
AA_NOTIFY = 'AAPLAY Уведомление'; { Сообщение-уведомление }
AA_STOP = 'AAPLAY Стоп'; { Стоп-сообщение }{
Это посылается в первом слове lParam с сообщением AA_ERROR.
Это указывает на возникшую ошибку
}
AA_BADPLAY = 1; { Ошибка при попытке воспроизведения }
AA_BADNOTIFY = 2; { Ошибка при попытке послать уведомление }
AA_BADSCRIPT = 3; { Ошибка в сценарии при попытке }{ воспроизведения }
{ ========================================================================== }unit aaplay1;
{ (c) P W Kuczora }{ 27-го апреля 1995 }interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, MPlayer;
{$I AAPLAY1.INC}const
AAPARMS_SIZE = 54;
type
AAHandle = word; { Дескриптор анимации }
AASPEED = word; { Тип, содержащий скорость анимации }
AATRN = word; { Тип для хранения перехода анимации }
dword = longint;
{
Структура параметра должна быть использована для анимации.
}
AAPARMS = record
AA_STATUS : byte; { Текущий статус анимации }
AA_FILETYPE : byte; { Тип файла на диске }
AA_MODE : byte; { Некоторые флаги }
AA_bitpix : byte; { бит на пиксел }
AA_HWnd : HWnd; { Дескриптор окна для статусного сообщения }
AA_X : integer; { Левая координата выводимого окна }
AA_Y : integer; { Верхняя координата выводимого окна }
AA_CX : integer; { Ширина выводимого окна }
AA_CY : integer; { Высота выводимого окна }
AA_ORGX : integer; { PoByVal в показываемой анимации }
AA_ORGY : integer; { в верхнем левом углу }
AA_SPEED : AASPEED; { Скорость анимации в миллисекундах на кадр }
AA_DESIGNSPEED : AASPEED; { Проектируемые миллисекунды на кадр }
AA_WIDTH : word; { Ширина анимации в пикселах }
AA_HEIGHT : word; { Высота анимации в пикселах }
AA_FRAMES : word; { Количество кадров в анимации }
AA_POSITION : dword; { Текущая кадровая позиция }
AA_LOOPS : dword; { Конечная позиция анимации }
AA_RPTSOUND : word; { Количество повторов звука }
AA_PAUSE : word; { Количество миллисекунд замораживания кадра }
AA_DELAYSND : longint; { Задержка звука в миллисекундах }
AA_TRANSIN : byte; { Переход в начале анимации }
AA_TRANSOUT : byte; { Переход в конце анимации }
AA_TIMEIN : word; { Продолжительность входного перехода в миллисекундах }
AA_TIMEOUT : word; { Продолжительность выходного перехода в миллисекундах }
AA_CALLBACK : HWnd; { Сообщение окна обратного вызова }
AA_ANIMWND : Hwnd; { Дескриптор окна анимации }end;
AAPARMSPtr = ^AAPARMS;
{type}
TAAPlayer = class(TMediaPlayer)
procedure OpenAA;
private{ Private declarations }protected{ Protected declarations }public{ Public declarations }
AAParameters: AAPARMS;
FlicHandle: AAHandle;
PlayWinHandle: THandle;
StatusWinHandle: THandle;
CallbackWinHandle: THandle;
published{ Published declarations }end;
procedureRegister;
{ Внешние вызовы AAPLAY.DLL }function aaOpen : boolean;
procedure aaClose;
function aaGetCaps(wType: word) : word;
function aaLoad(lpzFileName: PChar; WinHnd: HWnd; wMode: word;
x, y, wid, hght, orgx, orgy: integer): AAHandle;
function aaReLoad(hAa: AAHandle; lpzFileName: PChar; wMode, wMask: word)
: boolean;
function aaUnload(hAa: AAHandle): boolean;
function aaPlay(hAa: AAHandle) : boolean;
function aaNotify(hAa: AAHandle; lPosition, lParam: longint) : boolean;
function aaCancel(hAa: AAHandle; lLoPos, lHiPos: longint) : word;
function aaStop(hAa: AAHandle) : boolean;
function aaPause(hAa: AAHandle) : boolean;
function aaPrompt(hAa: AAHandle; lpName: PChar) : boolean;
function aaGetParm(hAa: AAHandle; wType: word) : longint;
function aaGetParmIndirect(hAa: AAHandle; lpAp: AAPARMSPtr; wSize: word)
: boolean;
function aaSetParm(hAa: AAHandle; wType: word; wValue1, lValue2: longint)
: AAHandle;
function aaSetParmIndirect(hAa: AAHandle; dwType: longint; lpAp: AAPARMSPtr;
wMask: word): boolean;
function aaShow(hAa: AAHandle; bShow: boolean) : boolean;
function aaSound(hAa: AAHandle; device, ffile: PChar; wMode: word)
: boolean;
function aaGetFile(dwFlags: word; lpszPath: PChar; wBufLen: word;
lpszDriver: PChar; wDrvLen: word) : integer;
function aaSave(hAa: AAHandle; wMode: word) : integer;
implementation{ =========================================================================== }procedureRegister;
begin
RegisterComponents('Samples', [TAAPlayer]);
end;
{ --------------------------------------------------------------------------- }procedure TAAPlayer.OpenAA;
var
FileSuffix, tempstr: string[12];
a,b: integer;
begin{ tempstr := ExtractFilename(AAPlayer.Filename); }{ a := StrPos(tempstr,'.');
if (a > 0) then
begin
b := a;
while (b <= StrLen(tmpstr)) do
begin
FileSuffix := FileSuffix + StrUpper(tempstr[b]);
b := b+1;
end;
if ((FileSuffix = '.FLC') or (FileSuffix = '.FLI')) then
begin}{ AutoEnable := False;
EnabledButtons := [btRecord,btEject];
}{end;
end;
}end;
{ =========================================================================== }{ Внешние вызовы 'AAPLAY.DLL' }{$F+}{ =========================================================================== }{ --------------------------------------------------------------------------- }function aaOpen : boolean;
external 'AAPLAY';
{ --------------------------------------------------------------------------- }procedure aaClose;
external 'AAPLAY';
{
' AAOpen и AAClose в действительности не нужны, за исключением обработки
' ошибки в Windows, которая предохраняет освобождение библиотек в процедуре
' выхода Windows (Windows Exit Proc, WEP).
'
' Поэтому мы используем AAClose для освобождения библиотек при закрытии
' последней задачей AAPlay DLL.
}{ --------------------------------------------------------------------------- }function aaGetCaps(wType: word) : word;
external 'AAPLAY';
{
' Получение возможностей
}{ --------------------------------------------------------------------------- }function aaLoad(lpzFileName: PChar; WinHnd: HWnd; wMode: word;
x, y, wid, hght, orgx, orgy: integer): AAHandle;
external 'AAPLAY';
{
' aaLoad загружает анимацию.
'
' Имя файла в lpzFileName
' и режим загрузки в wMode.
}{ --------------------------------------------------------------------------- }function aaReLoad(hAa: AAHandle; lpzFileName: PChar; wMode, wMask: word)
: boolean;
external 'AAPLAY';
{
' aaReLoad загружает файл новый анимации
' "в дескриптор" старой анимации.
'
' Уведомления теряются, но палитра и окно
' сохраняются.
}{ --------------------------------------------------------------------------- }function aaUnload(hAa: AAHandle): boolean;
external 'AAPLAY';
{
' aaUnload выгружает загруженную анимацию.
'
' Возвращается FALSE, если
' hAa не является дескриптором загруженной анимации.
}{ --------------------------------------------------------------------------- }function aaPlay(hAa: AAHandle) : boolean;
external 'AAPLAY';
{
' aaPlay воспроизводит загруженную анимацию.
'
' Возвращается TRUE, если после возврата aaPlay анимация не останавливается.
}{ --------------------------------------------------------------------------- }function aaNotify(hAa: AAHandle; lPosition, lParam: longint) : boolean;
external 'AAPLAY';
{
' aaNotify позволяет извещать приложение о воспроизведении
' определенных кадров анимации.
'
' lPosition -позиция, в которой должно происходить уведомление.
'
' wParam для данного сообщения - hAa, а lParam копируется из этого вызова.
'
' Возвращается TRUE, если уведомление установлено.
}{ --------------------------------------------------------------------------- }function aaCancel(hAa: AAHandle; lLoPos, lHiPos: longint) : word;
external 'AAPLAY';
{
' aaCancel позволяет приложению отменить уведомления, установленные aaNotify.
'
' lLoPos и lHiPos задает верхний и нижний предел позициям.
'
' Возвращает количество отмененных уведомлений.
}{ --------------------------------------------------------------------------- }function aaStop(hAa: AAHandle) : boolean;
external 'AAPLAY';
{
' aaStop прекращает воспроизведение анимации.
'
' При остановке воспроизведения aaStop возвращает TRUE.
}{ --------------------------------------------------------------------------- }function aaPause(hAa: AAHandle) : boolean;
external 'AAPLAY';
{
' aaPause приостанавливает воспроизведение.
'
' Возвращается TRUE, если после возврата aaPause анимация переходит в режим паузы.
'
' Для продолжения воспроизведения анимации используйте aaPlay.
}{ --------------------------------------------------------------------------- }function aaPrompt(hAa: AAHandle; lpName: PChar) : boolean;
external 'AAPLAY';
{
' aaPrompt позволяет выводить диалог для получения данных от пользователя.
'
' При получении данных дескриптор меняется, и, таким образом, вступают
' в силу новые параметры. Старый дескриптор не уничтожается до тех пор,
' пока не будет создан новый.
'
' Если новый дескриптор не может быть создан, aaPrompt возвращает NULL,
' в противном случае возвращается новый дескриптор.
}{ --------------------------------------------------------------------------- }function aaGetParm(hAa: AAHandle; wType: word) : longint;
external 'AAPLAY';
{
' aaGetParm возвращает информацию об анимации.
'
' Некоторая информация может быть установлена с помощью aaSetParm,
' и другая информация - информация о состоянии, поддерживаемая AAPLAY.
}{ --------------------------------------------------------------------------- }function aaGetParmIndirect(hAa: AAHandle; lpAp: AAPARMSPtr; wSize: word)
: boolean;
external 'AAPLAY';
{
' aaGetParmIndirect возвращает ту же информацию, что и aaGetParm,
' в структуре, удобной для легкого доступа из приложений Visual Basic.
}{ --------------------------------------------------------------------------- }function aaSetParm(hAa: AAHandle; wType: word; wValue1, lValue2: longint)
: AAHandle;
external 'AAPLAY';
{
' aaSetParm устанавливает информацию для анимации
}{ --------------------------------------------------------------------------- }function aaSetParmIndirect(hAa: AAHandle; dwType: longint; lpAp: AAPARMSPtr;
wMask: word): boolean;
external 'AAPLAY';
{
' aaSetParmIndirect устанавливает параметры анимации из структуры.
}{ --------------------------------------------------------------------------- }function aaShow(hAa: AAHandle; bShow: boolean) : boolean;
external 'AAPLAY';
{
' aaShow позволяет показать в окне отдельный кадр анимации.
'
' Mode определяет способ рисования анимации.
'
' Параметры окна возможно задать с помощью aaSetParm или aaSetParmIndirect.
'
' aaShow возвращает TRUE, если анимация была отрисована без ошибок.
}{ --------------------------------------------------------------------------- }function aaSound(hAa: AAHandle; device, ffile: PChar; wMode: word)
: boolean;
external 'AAPLAY';
{
' aaSound открывает и закрывает канал звукового сопровождения анимации.
'
' Звуковой канал будет открыт, если аргумент file не будет равен null
' и не будет пустым, в противном случае канал будет закрыт.
'
' Если устройство равно null, то для выбора подходящего устройства
' используется формат файла.
}{ --------------------------------------------------------------------------- }function aaGetFile(dwFlags: word; lpszPath: PChar; wBufLen: word;
lpszDriver: PChar; wDrvLen: word) : integer;
external 'AAPLAY';
{
' Открывает системного диалоговое окно стандартного типа ("открыть файл"),
' предлагающее пользователю выбрать файл.
'
' <dwFlags> определяет характеристики диалогового окна.
' Список возможных флагов:
' AA_GETFILE_MUSTEXIST Выбранный файл должен удовлетворять условиям
' флагов OpenFile(), в противном случае диалог
' издаст системный звук.
' AA_GETFILE_NOSHOWSPEC НЕ показывать путь в поле редактирования.
' По умолчанию путь к файлу показывается.
' AA_GETFILE_SAVE Кнопка Ok имеет заголовок "Save".
' AA_GETFILE_OPEN Кнопка Ok имеет заголовок "Open".
' AA_GETFILE_USEFILE Взять имя файла из параметра lpszPath
' AA_GETFILE_UDEDIR Взять каталог из параметра lpszPath
' AA_GETFILE_SOUND Получить звуковой файл и драйвер
' AA_GETFILE_SCRIPT Получить файл со скриптом
' AA_GETFILE_ANIMATION Получить файл анимации (без скриптов)
'
' <lpszPath> - строковый буфер LPSTR, куда после выполнения диалога
' пишется полное имя пути.
' <wBufLen> - длина данного буфера.
'
' <lpszDriver> - строковый буфер LPSTR для хранения выбранного
' звукового устройства.
' <wDrvLen> - длина данного буфера.
'
' Возвращаемые значения: 0, если была нажата кнопка Cancel
' -1, если OpenFile() потерпело неудачу,
' а AA_GETFILE_MUSTEXIST не определен.
' В противном случае возвращается дескриптор DOS-файла.
' При возврате из aaOpenFile данный дескриптор "не открыт".
}{ --------------------------------------------------------------------------- }function aaSave(hAa: AAHandle; wMode: word) : integer;
external 'AAPLAY';
{
' Сохранение скрипта
}{ --------------------------------------------------------------------------- }{$F-}{ Окончание внешних вызовов 'AAPLAY.DLL' }{ =========================================================================== }end.
{ =========================================================================== }