Автор:admin
Рассмотрим возможности воспроизведения звука в приложении Lazarus.
В самом простейшем случае приложение должно уметь выдавать звуковые сигналы или проигрывать небольшие звуковые сообщения при появлении каких-либо непредвиденных событий, когда нужно привлечь внимание пользователя.
Наиболее простой процедурой, управляющей звуком, является процедура Beep. Она не имеет параметров и воспроизводит стандартный звуковой сигнал, установленный в Windows.
Более серьезной функцией является функцию sndPlaySound.
Функция sndPlaySound воспроизводит указанный волновой файл формата .wav или определенный системой звук. Она объявлена в модуле mmSystem следующим образом:
BOOL sndPlaySound(LPCSTR lpszSoundFile, UINT wFlags);
Через параметр lpszSoundFile этой функции можно передать путь к wav-файлу.
Параметр wFlags определяет способ проигрывания звукового фрагмента. Используются следующие значения (некоторые из них можно комбинировать при помощи операции ИЛИ):
Значение |
Описание |
SND_SYNC |
Синхронный режим работы. Функция sndPlaySound вернет управление только после завершения проигрывания звукового фрагмента |
SND_ASYNC |
Асинхронный режим работы. Функция вернет управление немедленно, проигрывание звукового фрагмента будет выполняться в фоновом режиме параллельно с работой приложения |
SND_NODEFAULT |
Если указанный файл не найден, функция “тихо” возвращает управление, не проигрывая никаких звуков. Если же этот флаг не указан, и файл не найден, будет проигран стандартный системный звук.А если и это невозможно, функция не будет ничего проигрывать и вернет значение FALSE |
SND_MEMORY |
Это значение используется для проигрывания звуковых файлов, загруженных в оперативную память, например, из ресурсов приложения |
SND_LOOP |
Если указано значение SND_ASYNC, проигрывание звукового фрагмента будет зациклено. Для того чтобы остановить проигрывание, необходимо вызвать функцию sndPlaySound, указав ей в качестве параметра lpszSoundFile значение NULL |
SND_NOSTOP |
При указании этого значения функция проверяет, выполняется ли в настоящий момент проигрывание фрагмента. Если да, функция возвращает значение FALSE |
Во всех случаях, если не указан параметр SND_NOSTOP, функция sndPlaySound возвращает значение TRUE, если выполняется проигрывание, и FALSE – если нет. Учтите, что при использовании функций sndPlaySound есть ограничение на размер wav-файла – он должен целиком помещаться в физическую память. Поэтому этот пособы проигрывания звуковых фрагментов хороши только для относительно небольших файлов.
Задание. Создайте приложение, которое позволит прослушивать простейшие звуковые файлы формата wav.
1. Создайте новый проект, сохраните его в папке с названием «Звук».
2. Поместите на форму компонент TButton, измените надпись на ней на «Звук».(Измените свойство Caption).
3. Подготовьте wav-файл. (Скачайте файл CS2_AutoplayMusic.wav, поместите в папку проекта).
4. Создайте обработчик события для компонента TButton, выполнив на нем двойной щелчок, вводите в созданный обработчик код:
5. Так как в процедуре обработки нажатия кнопки используется вызов функции sndPlaySound, то следует включить в раздел описания uses вызов модуля mmSystem:
implementation
uses MMSystem;
{TForm1}
6. Запустим программу и посмотрим, что получилось. Щелкните на кнопке «Звук», звуковой файл должен начать проигрываться.
|