Советы по Delphi


Компонент для работы с FLIC-анимацией


Новостная группа: comp.lang.pascal.delphi.components
Тема: Компонент для работы с FLIC-анимацией: отправной пункт.
От: Paul Kuczora <paul@kuczora.demon.co.uk>
Дата: Чет, 03 Авг 95 16:51:19 GMT

В качество ответа на целый круг вопросов, я включил в свой ответ два файла: 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 }

interface

uses

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;
procedure Register;

{ Внешние вызовы 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

{ =========================================================================== }

procedure Register;
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.

{ =========================================================================== }

Dr Paul Kuczora.

--------------------------------------------------------------------------------
Paul Kuczora c home.london.uk
(на создание файла потрачен один день) [001137]



Содержание раздела