Выбрать главу

 ' Некоторая информация может быть установлена с помощью 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

(на создание файла потрачен один день) 

Как сделать, чтобы орган управления, например, сложная линия, хваталась только за некий контур, и пропускала мышь под себя в других местах?

Nomadic советует:

Надо обрабатывать сообщение CM_HITTEST (Это сообщение получают даже потомки от TGraphicsControl, не имеющего своего HWND).

Например, так:

procedure TLine.CMHitTest(var Message: TWMNCHitTest);

begin

 if PointInLineReg(Message.XPos, Message.YPos) then begin

  Message.Result := 1;

 end else begin

  Message.Result := 0;

 end;

end;

Для органов управления Windows, если Вы не используете VCL, требуется обрабатывать сообщение WM_NCHITTEST.