C++ Builder - вопросы программирования

       

Использование компонента MediaPlayer для воспроизведения



Листинг 4.2.

Использование компонента MediaPlayer для воспроизведения звука
void __fastcall TForml::FormCreate(TObject *Sender) { char *wd; // каталог Windows wd = (char*)AllocMem(MAX_PATH);
GetWindowsDirectory(wd,MAX_PATH);
SoundPath = wd; // звуковые файлы находятся в подкаталоге Media SoundPath = SoundPath + "\\Media\\"; // сформируем список звуковых файлов TSearchRec sr; if (FindFirst( SoundPath + "*.wav", faAnyFile, sr) == 0) { // найден файл с расширением wav ListBoxl->
Items->
Add(sr.Name);
// добавим имя файла в список // еще есть файлы с расширением wav? while (FindNext(sr) == 0) ListBoxl->
Items->
Add(sr.Name);
} if (FindFirst( SoundPath + "*.mid", faAnyFile, sr) == 0) { // найден файл с расширением mid ListBoxl->
Items->
Add(sr.Name);
// добавим имя файла в список // еще есть файлы с расширением mid? while (FindNext(sr} = 0) ListBoxl->
Items->
Add(sr.Name);
} if (FindFirstf SoundPath + "*.rmi", faAnyFile, sr) == 0) { // найден файл с расширением rmi ListBoxl->
Items->
Add(sr.Name);
// добавим имя файла в список // еще есть файлы с расширением rmi? while (FindNext(sr) == 0) ListBoxl->
Items->
Add(sr.Name);
} // воспроизвести первый файл if ( ListBoxl->
Items->
Count != 0) { Label2->
Caption = ListBoxl->
Items->
Strings[1]; MediaPlayerl->
FileName = SoundPath + ListBoxl->
Items->
Strings[l]; MediaPlayerl->
Open();
MediaPlayerl->
Play();
} } // щелчок на элементе списка void__fastoall TForml::ListBoxlClick(TObject *Sender) { Label2->
Caption = ListBoxl->
Items->
Strings[ListBoxl->
ItemIndex]; MediaPlayerl->
FileName = SoundPath + Label2->
Caption; MediaPlayerl->
Open();
MediaPlayerl->
Play() ; }
Работает программа следующим образом. Сразу после запуска функция обработки события onCreate формирует список звуковых файлов (WAV, MID и RMI), которые находятся в подкаталоге Media главного каталога Windows. Так как на разных компьютерах каталог, в который установлена операционная система, может называться по-разному, то для получения его имени используется API функция GetwindowsDirectory, значением которой является полное имя каталога Windows. Список звуковых файлов формируется

При помощи функций FindFirst и FindNext. функция FindFirst обеспечивает поиск файла, удовлетворяющего критерию поиска, указанному при вызове функции. Функция FindNext продолжает процесс поиска. Обеим функциям в качестве параметра передается структура типа TSearchRec, поле Name которой (в случае успеха) содержит имя файла, удовлетворяющего критерию поиска. После того как список звуковых файлов сформирован, применением метода Play активизируется процесс воспроизведения первого файла.

Щелчок на элементе списка обрабатывается функцией TFom1: :ListBox1Click, которая присваивает значение свойству FileName компонента MediaPiayer1, при помощи метода open открывает выбранный файл и применением метода Play активизирует процесс воспроизведения.

Следующий пример показывает, как на основе компонента MediaPiayer можно создать вполне приличный проигрыватель компакт-дисков. Вид формы и диалогового окна программы приведен на Рисунок 4.6. Помимо компонентов, показанных на рисунке, в форме есть компонент MediaPiayer. Так как кнопки компонента MediaPiayer во время работы программы не используются (для управления плеером служат кнопки Button1, Button2 и Buttons), свойству visible присвоено значение false, а сам компонент находится за границей формы.

Содержание раздела