Графика и мультимедиа_________________________________357

Значение	Звук
MBICONASTERISK	SystemAsterisk — звездочка
MBICONEXCLAMATION	SystemExclamation — восклицание
MBICONHAND	SystemHand — критическая ошибка
MBICONQUESTION	SystemQuestion — вопрос
MBOK	SystemDefault — стандартный звук

После запроса звука функция MessageBeep возвращает управление вызвав-
шей функции и воспроизводит звук асинхронно. Во время воспроизведения прило-
жение может продолжать выполняться.

Если невозможно воспроизвести указанный в функции звук, делается попыт-
ка воспроизвести стандартный системный звук, установленный по умолчанию.
Если и это невозможно, то воспроизводится стандартный сигнал через динамик.

При успешном выполнении возвращается ненулевое значение. При аварийном
завершении возвращается нуль.

Можете в своем тестовом приложении ввести еще одну кнопку и написать для
нее обработчик:

MessageBeep(МВ_ОК) ;

Вы услышите тот же стандартный звук Windows, что и при выполнении про-
цедуры Веер. Или услышите тот же тихий щелчок, если стандартный звук не уста-
новлен. Попробуйте установить различные звуки с помощью «Панели управле-
ния» и проверить MessageBeep при различных значениях ее параметра.

А теперь давайте займемся более серьезной функцией PlaySound, которая по-
зволяет воспроизводить не только звуки событий Windows, но и любые волновые
файлы. Это функция API Windows, параметры которой описаны в модуле mmsys-
tem. Поэтому для использования этой функции в вашем приложении необходимо
включить директиву #include <mmsystem.cpp>, поскольку автоматически С++Ви-
ilder ее не включает.

Функция PlaySound определена следующим образом:

bool PlaySound(char * pszSound, HINST hmod, int fdwSound);

Параметр pszSound представляет собой строку с нулевым символом в конце и
определяет воспроизводимый звук. Параметр hmod используется, если звук берет-
ся из ресурса. А поскольку далее звуком из ресурса мы пользоваться не будем, то
hmod всегда можно задавать равным 0.

Параметр fdwSound является множеством флагов, которые определяют ре-
жим воспроизведения и тип источника звука. Полное описание возможных значе-
ний флагов вы можете найти в главе 14 в разделе 14.19. Ниже приведены только
некоторые из них, но наиболее важные для воспроизведения произвольных волно-
вых файлов:

SND_ASYNC   Звук воспроизводится асинхронно и функция PlaySound воз-
вращается немедленно после начала воспроизведения. Чтобы
прекратить асинхронное воспроизведение волнового файла,
надо вызвать PlaySound с параметром pszSound, равным О

SND__LOOP     Воспроизведение звука постоянно повторяется, пока не вызо-
вется PlaySound с параметром pszSound, равным 0. Одновре-
менно надо установить флаг SND_ASYNC асинхронного вос-
произведения звука