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

Denis Tanayeff

Это кусочек из рабочей проги на Си, Вроде все лишнее я убрал.

#define CO_GRAY 0x00C0C0C0L

hMemDC = CreateCompatibleDC(hDC);

 hOldBitmap = SelectObject(hMemDC, hBits);

// hBits это собственно картинка, которую надо «засерить»

GetObject(hBits, sizeof(Bitmap), (LPSTR) &Bitmap);

if (GetState(BS_DISABLED)) // Blt disabled

{

 hOldBrush = SelectObject(hDC, CreateSolidBrush(CO_GRAY));//CO_GRAY

 PatBlt(hDC, BD_BORDERWIDTH, BD_BORDERWIDTH, Bitmap.bmWidth, Bitmap.bmHeight, PATCOPY);

 DeleteObject(SelectObject(hDC, hOldBrush));

 lbLogBrush.lbStyle = BS_PATTERN;

 lbLogBrush.lbHatch =(int)LoadBitmap(hInsts, MAKEINTRESOURCE(BT_DISABLEBITS));

 hOldBrush = SelectObject(hDC, CreateBrushIndirect(&lbLogBrush));

 BitBlt(hDC, BD_BORDERWIDTH, BD_BORDERWIDTH, Bitmap.bmWidth, Bitmap.bmHeight, hMemDC, 0, 0, 0x00A803A9UL); // DPSoa

 DeleteObject(SelectObject(hDC, hOldBrush));

 DeleteObject((HGDIOBJ)lbLogBrush.lbHatch);

}

Компонент для работы с 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;               { Установить/получить текущую скорость }