СообЧа > База Знаний > Программирование > Delphi

Вопрос

Можно ли сделать так, чтобы в исполняемом файле программы находился какой-нибудь звук в формате .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 Сообщество Чайников
Контактная информация