Операционная система 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 вы можете указать один из
следующих стилей:
В том случае когда орган управления 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 . Первое из них сообщает о том, что процесс проигрывания видеоролика начался, а второй - что этот процесс завершился. |