Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Операционная система Windows 95 для программиста

© Александр Фролов, Григорий Фролов
Том 22, М.: Диалог-МИФИ, 1993, 271 стр.

[Назад] [Содеожание] [Дальше]

7.3. Орган управления Animation

Орган управления Animation очень прост в использовании и может увеличить привлекательность приложения. На рис. 1.5 в первой главе показано, как с помощью органа управления Animation можно "оживить" процедуру копирования файла. В нашем приложении Compact Disk Player, к которому мы скоро перейдем, этот орган управления используется для изображения вращающегося компакт диска. Диск вращается только тогда, когда выполняется проигрывание дорожки.

Принцип действия органа управления Animation заключается в проигрывании AVI -файла, содержащего видеоизображение. Вы можете создать небольшой мультфильм из отдельных BMP-файлов с помощью приложения VidEdit, которое входит в состав Microsoft Video for Windows 3.1 версии 1.1. Соответствующая процедура описана в 15 томе "Библиотеки системного программиста", который называется "Мультимедиа для Windows".

Учтите, что для сжатия вы можете использовать только алгоритм RLE (можно также использовать несжатые файлы), причем AVI-файл не должен содержать звуковой информации. Если же вам нужно проигрывать видеоклип с звуковым сопровождением, да и еще сжатый более эффективно, лучше всего использовать орган управления MCIWnd , который был подробно описан в 15 томе нашей библиотеки.

Создание органа управления Animation

Если вы желаете создать орган управления Animation в обычном окне, то это можно сделать с помощью макрокоманды Animate_Create :

HWND Animate_Create(
  HWND  hwndP,          // идентификатор родительского окна
  UINT  id,             // идентификатор окна органа Animation
  DWORD  dwStyle,       // стиль окна органа Animation
  HINSTANCE  hInstance; // идентификатор приложения
);

Эта макрокоманда создает орган управления Animation, вызывая функцию CreateWindow и указывая ей предопределенный класс окна ANIMATE_CLASS .

В параметре dwStyle вы можете указать один из следующих стилей:

Стиль Описание
ACS_AUTOPLAY Проигрывание видеоизображения начинается автоматически сразу после открытия соответствующего AVI-файла
ACS_CENTER Видеоизображение будет центрировано в окне органа управления
ACS_TRANSPARENT Изображение рисуется в прозрачном режиме

В том случае когда орган управления Animation должен быть расположен в диалоговой панели, его необходимо переместить туда из палитры редактора диалоговых панелей. Если же вы пользуетесь системой разработки Microsoft Visual C++ версии 2.0, вам придется отредактировать файл ресурсов самостоятельно. Для этого откройте его в текстовом режиме и вставьте следующие строки:

CONTROL  "Animate",IDC_ANIMATE, "SysAnimate32", 
  WS_BORDER | WS_TABSTOP | 0x1, 219, 34, 33, 33

Последние четыре числа определяют, соответственно расположение и размеры окна органа управления Animation.

Дополнительно к стилям WS_BORDER и WS_TABSTOP могут быть добавлены описанные выше специфические стили органа управления Animation, определенные следующим образом:

#define ACS_CENTER        0x0001
#define ACS_TRANSPARENT   0x0002
#define ACS_AUTOPLAY      0x0004

Сообщения для органа управления Animation

Для органа управления Animation определены макрокоманды, посылающие сообщения ACM_OPEN, ACM_PLAY и ACM_STOP. Все они возвращают значение TRUE в случае успешного завершения и FALSE при ошибке.

Открытие видеоролика

BOOL Animate_Open (hwnd, lpszName);

Через параметр hwnd макрокоманде передается идентификатор органа управления Animation.

Параметр lpszName должен содержать указатель на текстовый буфер, в который записан путь к AVI-файлу или идентификатор ресурса AVI, созданный с помощью макрокоманды MAKEINTRESOURCE.

Закрытие видеоролика

BOOL Animate_Close (hwnd);

Параметр hwnd должен содержать идентификатор органа управления Animation.

Запуск проигрывания

BOOL Animate_Play (hwnd, wFrom, wTo, cRepeat);

Эта макрокоманда запускает проигрывание открытого видеоролика для органа управления Animation с идентификатором hwnd.

Параметры wFrom и wTo указывают, соответственно, номера начального и конечного кадра в видеоролике. Эти номера не должны превышать значения 65536, причем нулевое число означает начало видеоролика.

Параметр cRepeat определяет количество повторных проигрываний, которые необходимо выполнить. Если в этом параметре указано значение -1, проигрывание выполняется бесконечное число раз.

Останов проигрывания

BOOL Animate_Stop (hwnd);

Макрокоманда Animate_Stop выполняет останов запущенного ранее проигрывания видеоролика.

Позиционирование

BOOL Animate_Seek (hwnd, wFrame);

С помощью макрокоманды Animate_Seek вы можете отобразить кадр открытого видеоролика с номером wFrame.

Извещения от органа управления Animation

Орган управления может посылать в родительское окно извещения в форме сообщения WM_COMMAND . Это извещения ACN_START и ACN_STOP .

Первое из них сообщает о том, что процесс проигрывания видеоролика начался, а второй - что этот процесс завершился.

[Назад] [Содеожание] [Дальше]