Мир современных компьютеров трудно представить без мультимедийных возможностей; однако проигрывание звуковых файлов не поддерживалось в библиотеке .NET Framework 1.0. Подобный подход Microsoft удивил многих программистов. В этом случае приходилось использовать неуправляемый код с вызовом функции
PlaySound
.
С выходом .NET Framework 2.0 ситуация изменилась в лучшую сторону. Но легкая поддержка звуковых файлов остается прерогативой настольных систем. В библиотеке .NET Compact Framework по-прежнему отсутствует поддержка проигрывания звуковых файлов. А ведь для разработки игры наличие звуковых эффектов является обязательным условием, иначе игра будет просто неинтересна!
Поэтому нужно устранить недоработку разработчиков из Microsoft. В новом примере будут использоваться два способа воспроизведения звуков. В первом случае программа будет извлекать звуковой фрагмент из ресурсов. Во втором случае программа будет проигрывать звук из обычного WAV-файла.
Итак, нужно создать новый проект с именем
PlaySound_CS
.
К проекту надо добавить новый класс с именем
Sound
. Объявление функции
PlaySound
, необходимой для проигрывания звуков, нужно поместить в класс
private extern static int PlaySoundBytes(byte[] szSound, IntPtr hMod,
int flags);
Данная функция использует для параметра
flags
несколько предопределенных констант. Более подробную информацию о назначении флагов этой функции можно найти в документации.
После этого создаются два конструктора с разными параметрами, которые будут использоваться для разных методов воспроизведения звука, и метод
Play
. Теперь нужно перейти к основной форме и разместить на ней две кнопки. Первая кнопка,
butResource
, будет проигрывать звуковой фрагмент, который хранится в ресурсах приложения. Кнопка
butFilе
запустит метод, который проигрывает аудиофайл.
Для того чтобы пример работал, понадобятся два звуковых файлов. В состав Windows XP входит несколько звуковых файлов. Для данного примера использовался файл
chimes.wav
. Его нужно добавить в проект. Чтобы включить файл
chimes.wav
в проект как ресурс, надо в свойствах файла выбрать пункт
Build Action
и установить значение
Embedded Resource
.
В качестве внешнего аудиофайла будет использоваться файл
alarm3.wav
, входящий в состав Windows Mobile. Этот файл находится в папке
Windows
. При желании можно использовать свой файл, но при этом надо в коде указать путь к нему. Теперь достаточно прописать код для обработки события
Click
созданных кнопок, как показано в листинге 13.11, — и приложение готово.