 
        
        - •Введение
- •Компонент TTimer
- •Создание анимации
- •Использование спрайтов
- •Использование компонента TImage
- •Использование маски спрайта
- •Использование компонента TImageList
- •Воспроизведение звуковых и видеофайлов
- •Функция MessageBeep
- •Функция PlaySound
- •Компонент TMediaPlayer
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе
- •Справочные таблицы
 
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 7 – Выбор «прозрачного» цвета для изображения.
Воспроизведение звуковых и видеофайлов
Функция MessageBeep
Иногда требуется воспроизвести короткий звуковой сигнал для привлечения внимания пользователя программы – например, после завершения длительного по времени процесса обновления данных. Стандартная для Delphi процедура без параметров Beep извлекает сигнал из системного динамика только в том случае, если компьютер не оснащен звуковой картой. С другой стороны, мощные возможности компонента TMediaPlayer кажутся излишними для решения этой задачи на компьютерах, оснащенных звуковой картой. В этом случае может пригодиться API-функция MessageBeep, с помощью которой в 32разрядных версиях Windows озвучиваются стандартные диалоговые окна.
function MessageBeep(idSound: word): Boolean;
Единственным параметром обращения к этой функции является один из идентификаторов стандартного звука приведенных в таблице 1.
Таблица 1 – Идентификаторы для стандартных звуков
| Значение | Описание | 
| 
 | 
 | 
| -1 | Игнорирует звуковую карту и извлекает короткий звуковой сигнал | 
| 
 | из системного динамика | 
| mb_IconAsterisk | Произошла ошибка | 
mb_IconExclamation Произошла ошибка
| mb_IconHand | Запрос на выбор параметра | 
| mb_IconQuestion | Запрос подтверждения | 
| mb_Ok | Успешное завершение операции | 
Сразу после обращения функция возвращает управление программе и воспроизводит звук асинхронно.
 
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Функция PlaySound
Значительно более богатые возможности по проигрыванию звуковых файлов имеет функция PlaySound, которая способна воспроизводить любые звуковые клипы.
Объявление функции имеет следующий вид:
function PlaySound(pszSound: PChar; hmod: HINST; fdwSound:Cardinal): Boolean;
гдеpszSound – имя воспроизводимого файла;
hmod – дескриптор программы, если звук берется из ресурсного файла противном случае содержит 0);
fdwSound – параметр, уточняющий воспроизведение.
Параметр fdwSound может принимать значения или их комбинацию приведенные в таблице 2.
Таблица 2 – Некоторые возможные значения параметра fdwSound.
| Значение | Описание | 
| 
 | 
 | 
| SND_ASYNC | Звук воспроизводится асинхронно (функция возвращает управление | 
| 
 | сразу после обращения к ней) | 
| SND_LOOP | Звук воспроизводится постоянно до тех пор, пока не вызвана та же | 
| 
 | функция с параметром pszSound, равным ‘’ | 
| SND_NOSTOP | Функция пытается воспроизвести звук, если устройство не занято; в | 
| 
 | противном случае не воспроизводит ничего (если устройство | 
| 
 | занято, но этот параметр не указан, функция прервет | 
| 
 | воспроизведение предыдущего звука и начнет воспроизведение | 
| 
 | следующего) | 
| SND_NOWAIT | Если устройство занято, функция не будет воспроизводить новый | 
| 
 | звук | 
| SND_PURGE | Прекращает воспроизведение всех звуков для данной задачи | 
| SND_SYNC | Воспроизводит звук синхронно и возвращает управление только | 
| 
 | после окончания его воспроизведения | 
| SND_NODEFAULT | Отменить проигрывание звука по умолчанию. Если указанный | 
| 
 | звуковой файл не найден, PlaySound завершает работу без | 
| 
 | проигрывания звука по умолчанию. | 
| SND_MEMORY | Звуковой файл загружен в ОЗУ. Параметр fdwSound должен | 
| 
 | содержать указатель на звуковые данные. | 
SND_APPLICATION Звук проигрывается с использованием приложения ассоциированного с этим файлом
| SND_ALIAS | Параметр fdwSound содержит идентификатор системного события | 
| 
 | описанного в реестре или в файле Win.ini. Нельзя использовать | 
| 
 | совместно с SND_FILENAME или SND_RESOURCE | 
| SND_RESOURCE | Параметр fdwSound содержит идентификатор ресурса, параметр | 
| 
 | hmod должен содержать дескриптор загруженного экземпляра | 
| 
 | ресурса. | 
 
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Параметр fdwSound может содержать несколько опций одновременно (для объединения используется логическая операция or). В случае успешного выполнения результат возвращаемый функцией равен True, иначе False.
Рассмотрим несколько простых примеров использования функции PlaySound. Озвучим программу, приведенную в листинге 1.
Добавьте в список модулей модуль mmSystem. Измените, обработчик OnCreate формы как показано ниже
procedure TfrmAirPlane.FormCreate(Sender: TObject); begin
//двойная буферизация
DoubleBuffered:=True; //загрузка изображений
LoadImages; //расчет координат
CalcNewCoord(x, y); //включаем звук
PlaySound('ir_inter.wav', 0, SND_LOOP or SND_ASYNC); end;{FormCreate}
Параметр fdwSound содержит флаг SND_LOOP поэтому звук будет повторяться бесконечно. Кроме того установка флага SND_ASYNC приводит к асинхронному выполнению функции PlaySound, т.е. звук будет воспроизводится в фоновом режиме (параллельно с основной программой).
Измените обработчик события OnDestroy формы как показано ниже.
procedure TfrmAirPlane.FormDestroy(Sender: TObject); begin
//уничтожение созданных растров
Background.Free;
Mask.Free;
Sprite.Free;
//проигрываем стандартный звук при выходе из системы
PlaySound('SystemExit', 0, SND_SYNC); end;{FormDestroy}
В данном примере проигрывается стандартный звук, проигрываемый при выходе из операционной системы. Обратите внимание на то, что звук проигрывается в синхронном режиме (SND_SYNC). Это необходимо для того, чтобы приложение было выгружено из памяти после завершения проигрывания звука. Если попытаться проиграть звук в асинхронном режиме, то сразу после вызова функции PlaySound, до завершения ее работы, управление получит основная программа которая завершит свое выполнение. При этом будет принудительно остановлено выполнение функции PlaySound и звук, скорее всего, не будет воспроизведен.
При воспроизведении стандартных звуков необходимо чтобы была настроена звуковая схема. Сделать это можно в панели управления с помощью раздела «Звук и мультимедиа» (рисунок 8).
 
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 8 – Панель управления
Настроить звуковую схему можно на вкладке «Звуки» раздела «Звук и мультимедиа» (рисунок 9). Если событию не сопоставлен ни один звук, то функция PlaySound воспроизведет звук по умолчанию.
