Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

Delphi , Компоненты и Классы , Создание компонент

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

Автор: Dr Paul Kuczora

В качество ответа на целый круг вопросов, я включил в свой ответ два файла:

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.

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


Статья Компонент для работы с FLIC-анимацией раздела Компоненты и Классы Создание компонент может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Создание компонент ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
29.03.2024 03:57:36/0.033277034759521/0