Вопрос
Можно ли сделать так, чтобы в исполняемом файле программы находился какой-нибудь звук в формате .wav?
Ответ
Можно ли сделать так, чтобы в исполняемом файле программы находился какой-нибудь звук в формате .wav, и можно было бы проиграть этот звук?
В файл MyWave.rc пишешь:
MyWave RCDATA LOADONCALL MyWave.wav
brcc32.exe MyWave.rc, получаешь MyWave.res.
В своей программе пишешь:
{$R MyWave.res}
Все!
Предупреждая следующий твой вопрос "а как прочитать wave-файл из исполняемого файла?"
procedure RetrieveMyWave;
var
hResource: THandle;
pData: Pointer;
begin
hResource:=LoadResource( hInstance, FindResource(hInstance, 'MyWave',RT_RCDATA));
try
pData := LockResource(hResource);
if pData = nil then
raise Exception.Create('Cannot read MyWave');
// Здесь pData указывает на MyWave
// Теперь можно, например, проиграть его (Win32):
PlaySound(pData, 0, SND_MEMORY);
finally
FreeResource(hResource);
end;
end;
PlaySound('RESNAME', 0, SND_MEMORY or SND_RESOURCE);
Для этого надо создать файл описания ресурса, например Waves, в который поместить следующие строки:
SOUND1 WAVE WMyWave1.wav
SOUND2 WAVE WMyWave2.wav
Затем запустить ресурс на компилияцию brcc32.exe Waves.rc, в результате получится файл ресурса Waves.res.
В своей программе подключаем ресурс (в любом модуле):
{$R Waves.res}
Для проигрывания звука можно использольвать функцию PlaySound
PlaySound('SOUND1', 0, SND_ASYNC or SND_RESOURCE);
Anatoly Podgoretsky
Copyright 2000-2004 Сообщество Чайников
Контактная информация