Ранее, в предыдущих томах "Библиотеки системного программиста", мы упоминали функцию MessageBeep : void MessageBeep(UINT uAlert);
Эта функция как раз и предназначена для выдачи звуковых сигналов. Правда, если в компьютере не установлен драйвер звукового адаптера или драйвер для работы с динамиком, при вызове этой функции можно услышать только короткий звуковой сигнал "бип".
Если же звуковой драйвер установлен, в зависимости от значения параметра uAlert функция MessageBeep может воспроизводить один из звуковых фрагментов, записанных в wav-файле.
Обратите внимание, что в файле win.ini имеется раздел [sound], в котором перечислены различные ситуации. Для ситуации может быть указано имя wav-файла, который должен быть воспроизведен при ее возникновении: [sounds] SystemAsterisk=chimes.wav,Asterisk SystemHand=ding.wav,Critical Stop SystemDefault=,Default Beep SystemExclamation=ding.wav,Exclamation SystemQuestion=ding.wav,Question SystemExit=bye.wav,Windows Exit SystemStart=,Windows Start
У вас нет необходимости изменять этот раздел вручную, так как это можно сделать при помощи приложения Control Panel (рис. 1.8).
Возможные значения параметра uAlert для функции MessageBeep приведены в следующей таблице.
Значение | Описание |
-1 | Стандартный звуковой сигнал, который выдается на встроенный в компьютер динамик |
MB_ICONASTERISK | Проигрывается wav-файл, определенный в строке SystemAsterisk раздела [sound] файла win.ini |
MB_ICONEXLAMATION | Аналогично для строки SystemExclamation |
MB_ICONHAND | Аналогично для строки SystemHand |
MB_ICONQUESTION | Аналогично для строки SystemQuestion |
MB_OK | Аналогично для строки SystemDefault |
Функция MessageBeep пытается проиграть звуковой фрагмент в асинхронном (фоновом) режиме, если это позволяет звуковой драйвер. Если в системе установлен драйвер Sound Driver for PC Speaker, функция MessageBeep возвращает управление только после того, как проигрывание будет закончено. Если же функция не может проиграть нужный фрагмент, будет "исполнен" стандартный системный звук, определенный в строке SystemDefault раздела [sound] файла win.ini. Если же и это невозможно, вы услышите "бип" из встроенного в компьютер динамика.