Листинг 5.4.
Использование ресурсов для хранения звуковых записей
//Функция, которая воспроизводит звук, находящийся в ресурсе
procedure RetrieveLoadSound;
var
hResource : THandle;
pData : Pointer;
begin
//Загружаем файл ресурса и находим звук под именем \'LOADSOUND\'
hResource := LoadResource( hInstance, FindResource(hInstance,
\'LOADSOUND\', RT_RCDATA));
try
//Находим адрес загруженного ресурса
pData := LockResource(hResource);
if pData = nil then raise Exception.Create(\'Ошибка чтения
ресурса LOADSOUND\');
//Воспроизводим звуковой файл
sndPlaySound(pData, SND_MEMORY);
finally
//Освобождаем ресурс
FreeResource(hResource);
end;
end;
Для работы функции RetrieveLoadSound понадобятся две следующие переменные: hResource (дескриптор ресурса) и pData (указатель на память, расположение ресурса). Перед использованием ресурса производится его загрузка (функция LoadResource). Но чтобы загрузить именно тот ресурс, который нам необходим (звук LOADSOUND), с помощью функции FindResource ищем его в ресурсах, подключенных к этому экземпляру приложения (hlnstance). Далее получаем указатель на память, в которой находится звуковой файл, и записываем его в переменную pData. Если ресурс не найден, то программа выдаст сообщение об ошибке.
После того как был получен указатель на память, его можно использовать в функции sndPlaySound для воспроизведения звука. Параметр SND_MEMORY говорит о том, что воспроизведение будет осуществляться из памяти.
Функция RetrieveLoadSound может использоваться в любом месте программы для воспроизведения start. wav. В этом случае данные звукового файла будут находиться в запускаемом модуле, увеличивая его объем, но сокращая количество файлов приложения. Такой подход эффективен при создании небольших приложений, которые снабжаются короткими звуковыми сопровождениями.
В конце главы будет подробно описан процесс создания универсального проигрывателя, работа которого целиком построена на использовании компонента MediaPlayer. Далее рассмотрим следующий мультимедийный компонент Delphi – Animate, который позволяет воспроизводить как стандартную (встроенную в Windows), так и пользовательскую анимацию.