Суббота, 04.05.2024, 17:35

Delphi

Приветствую Вас Гость

Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня были:
Самые активные пользователи

Меню сайта
Категории каталога
Звук и музыка [1]
Графика и игры [6]
Базы данных [1]
Стандартные компоненты [0]
3D графика [4]
Исходники [10]
DirectX и OpenGL [5]
Разное [1]
Интернет и сети [7]
Наш опрос
Чему уделять больше внимания?
Всего ответов: 64
Главная » Статьи » Delphi » Звук и музыка

Фоновая музыка в Delphi-приложении.
Фоновая музыка в Delphi-приложении. Привет! Настало время разобраться с фоновой музыкой в Delphi-приложениях. Ты, наверно, сразу скажешь : "Дак можно просто взять TMediaPlayer и сделать его невидимым". Можно. Я не спорю. Но так прога будет кушать больше ресурсов компьютера. Да и звуковые файлы отдельно от EXE-шника таскать не удобно : могут изменить или вообще удалить.
Сегодня я покажу тебе, как запихать WAV-файлы в EXE-шник и как возпроизвести их без компонента MediaPlayer. Если ты готов, то создовай новый проект и сразу сохроняй его в отдельную директорию.

Ресурсы.

Начнём мы с файла-ресурсов. Подбири какие-нибудь звуки. Я назвал их Sound01 и Sound02. Теперь создовай в директории своего проекта текстовый файл со следующим содержанием:

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". Теперь его надо привязать к нашему проекту...

Кодим.

Итак, файл ресурсов создан. Теперь, в проекте после строки {$R *.dfm} нужно добавить ещё строку {$R Sound.res} . Этими действиями мы линкуем (привязываем) наш файл ресурсов к EXE-шнику, т.е. при компиляции проекта все файлы из ресурса встроятся в тело программы.
Теперь начнём работу с этими ресурсами. Сначала добавь в раздел uses ещё один модуль MMSystem, он нам пригодится для воспроизведения WAV-файлов.
Давай сначала напишем процедуру воспроизведения файла из ресурсов. У меня она получилась вот такой :

procedure PlayWAVfromRES(name:PAnsiChar);
var
hResource: THandle;
pData: Pointer;//указатель на ресурс
begin
hResource:=LoadResource( hInstance, FindResource(hInstance, name, RT_RCDATA));
pData := LockResource(hResource);
SndPlaySound(pData, SND_MEMORY);
FreeResource(hResource);
end;

Здесь всё просто : сначала получаем хендл ресурса при помощи функции LoadResource. В качестве второго параметра, передаваемого этой функции, идёт результат функции FindResource. Эта функция отыскивает нужный нам ресур по его имени (в данном случае это переменная name). Потом указываем нашему указателю на ресурс. А при помощи SndPlaySound(pData, SND_MEMORY); мы проигрываем полученный файл. Ну а последней строкой мы освобождаем файл-ресурс из памяти.
Теперь добавь к форме кнопочку и создай обработчик нажатия этой кнопки. Впиши в него следующее:

PlayWAVfromRES('Sound01');

Это вызов нашей процедуры. В качестве единственного параметра указываем имя ресурса. Теперь можно сделать чтоб ещё один звук проигрывался при открытии приложения. Для этого создай обработчик события OnCreate нашей формы и впиши туда :

PlayWAVfromRES('Sound02');

Думаю, ты и сам понял, что здесь написано. Ну, вроде всё! Исходники моего проекта забирай здесь. Остальное позже...











Взято с сайта http://www.liveofpc.3dn.ru/

Категория: Звук и музыка | Добавил: Ivin (22.03.2008)
Просмотров: 4606 | Рейтинг: 3.0/2 |