Фонова музика в приложението Delphi

Хей! Сега е моментът да се справите с фоновата музика в приложенията на Delphi. Вероятно веднага ще кажете: „Патице, можеш просто да вземеш TMediaPlayer и да го направиш невидим.“ Мога. Не споря. Но по този начин програмата ще консумира повече компютърни ресурси. А звуковите файлове, отделно от EXE файла, не са удобни за носене: те могат да бъдат променяни или изтривани изцяло.

Днес ще ви покажа как да натъпкате WAV файлове в EXE и как да ги възпроизвеждате без компонента MediaPlayer. Ако сте готови, създайте нов проект и незабавно го запазете в отделна директория.

Sound01 RCDATA LOADONCALL Sound01.wav
Sound02 RCDATA LOADONCALL Sound02.wav

Както вероятно вече сте разбрали, това са имена и пътища към файлове. Нашите файлове се съхраняват директно в директорията с ресурса, така че не е необходимо да указвате пътя, а просто посочете името. В този пример два файла са Sound01 и Sound02. Но можете да ги поставите там, колкото искате, въпреки че албумът на любимия ви певец се усмихва.

Сега преименувайте нашия текстов файл на „Sound.rc“. Така. Сега трябва да съставим цялото нещо. Ще компилираме ресурсите чрез BRCC32.exe (Borland Resource CommandLine Compiler), който се предлага в стандартната дистрибуция на Delphi. Пътят и името на файла с ресурси трябва да бъдат посочени като параметър. В нашия случай трябва да изпълним реда:

C: \ - директория Delphi- \ BIN \ BRCC32.EXE C: \ - директория на проекта- \ Sound.rc

В случай на успешно стечение на обстоятелствата (леле, как се случи!), В смисъл, че всичко мина добре, тогава файлът "Sound.res" ще се появи в директорията на нашата програма. Сега трябва да го свържем с нашия проект.

И така, ресурсният файл е създаден. Сега, в проекта, след реда, трябва да добавите друг ред. С тези действия ние свързваме (обвързваме) нашия ресурсен файл с EXE-shnik, т.е. при компилиране на проект всички файлове от ресурса са вградени в тялото на програмата.

Сега нека започнем да работим с тези ресурси. Първо, добавете още един MMS системен модул към раздела за употреби, той ще бъде полезен за възпроизвеждане на WAV файлове.
Нека първо напишем процедура за възпроизвеждане на файл от ресурси. Разбрах го така:

Тук всичко е просто: първо получаваме манипулатора на ресурса с помощта на функцията LoadResource. Вторият параметър, предаден на тази функция, е резултат от функцията FindResource. Тази функция намира ресурса, от който се нуждаем, по неговото име (в случая това е променливата на името). След това посочваме нашия указател на ресурса. И използване на SndPlaySound (pData, SND_MEMORY); пускаме получения файл. Е, с последния ред освобождаваме ресурсния файл от паметта.

Сега добавете бутон към формуляра и създайте манипулатор за щракване върху този бутон. Напишете следното в него:

Това е призив към нашата процедура. Посочете името на ресурса като единствен параметър. Сега можете да направите друг звук, когато отворите приложението. За целта създайте манипулатор на събития за OnCreate събитието на нашия формуляр и напишете там:

Мисля, че ти сам разбра какво пише тук. Е, всичко изглежда!