KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Валентин Озеров, "Советы по Delphi. Версия 1.4.3 от 1.1.2001" бесплатно, без регистрации.
Перейти на страницу:

 '

 ' 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

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

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

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.

Как быстро нарисовать тень в заданном регионе?

Nomadic советует:

procedure TForm2.DrawShadows(WDepth, HDepth : Integer);

var

 Dst, RgnBox : TRect;

 hOldDC : HDC;

 OffScreen : TBitmap;

 Pattern : TBitmap;

 Bits : array[0..7] of WORD;

begin

 Bits[0] := $0055;

 Bits[1] := $00aa;

 Bits[2] := $0055;

 Bits[3] := $00aa;

 Bits[4] := $0055;

 Bits[5] := $00aa;

 Bits[6] := $0055;

 Bits[7] := $00aa;

 hOldDC := Canvas.Handle;

 Canvas.Handle := GetWindowDC(Form1.Handle);

 OffsetRgn(ShadeRgn, WDepth, HDepth);

 GetRgnBox(ShadeRgn, RgnBox);

 Pattern := TBitmap.Create;

 Pattern.ReleaseHandle;

 Pattern.Handle := CreateBitmap(8, 8, 1, 1, @(Bits[0]));

 Canvas.Brush.Bitmap := Pattern;

 OffScreen := TBitmap.Create;

 OffScreen.Width := RgnBox.Right-RgnBox.Left;

 OffScreen.Height := RgnBox.Bottom-RgnBox.Top;

 Dst := Rect(0, 0, OffScreen.Width, OffScreen.Height);

 OffsetRgn(ShadeRgn, 0, –RgnBox.Top);

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*