Создание музыкального проигрывателя средствами С++
Визуальный компонент, используемый для создания главного меню на форме, создание закладки и добавление в список воспроизведения музыкального файла. Определение повторения воспроизведения и отображение списков строк, проигрывание аудио и видео файлов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 27.03.2012 |
Размер файла | 128,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа №8
Аудио проигрыватель
Выполнил:
Студент группы ДС 71
Грабовый Александр
2009
Поставим на форму следующие компоненты:
MainMenu (Закладка Standard)
PopupMenu (Закладка Standard)
ListBox (Закладка Standard)
Panel (Закладка Standard)
Label (Закладка Standard) - поместим на форму 6 штук
MediaPlayer (Закладка System)
Timer (Закладка System) - 2 штуки
OpenDialog (Закладка Dialogs)
TrackBar (Закладка Win32)
Для упрощения программы опцию Name для всех элементов оставляем стандартной (в редких случаях я ее все-таки менял для сокращения).
MainMenu
Этот не визуальный компонент используется для создания главного меню на форме.
Создадим закладку File (Caption = &File), а в ней 2 кнопки: Add (Caption = &Add) и Exit (Caption = &Exit). Это можно сделать перейдя в опцию Items.
Add будет добавлять в список воспроизведения музыкальный файл. Код для этой кнопки пропишем позже.
Выход из программы будет осуществлятся при нажатии клавиши Exit.
PopupMenu
Это не визуальный компонент, который используется для создания контекстного меню.
Переходим в опцию Items и добавляем 3 элемента:
Add - будет добавлять в список воспроизведения музыкальный файл.
Delete - будет удалять из списка воспроизведения выделенный файл.
Review
Для этого элемента выставим:
Checked = true
Name = Rew
Этот элемент будет определять повторение воспроизведения. Повторение возможно если элемент отмечен.
Для формы выставим опцию
PopupMenu = PopupMenu1
ListBox
Визуальный компонент для отображения списков строк. Этот элемент будем использовать в качестве списка воспроизведения. С диалогового окна открытия файла сюда будет поступать путь к файлу, а потом отсюда путь будет отправляться в проигрыватель.
Выставим следующие опции:
ShowHint = true
Hint = PlayList
Теперь, когда мы наведем курсор на ListBox в работающей программе, будет появляться надпись «PlayList».
Выставим для ListBox опцию
PopupMenu = PopupMenu1
Panel and Labels
Ставим метки в следующей последовательности и выставляем для них
Caption:
(Label2) Caption = Сейчас проигрывается:
(Label3) Caption =
(Label4) Caption = Продолжительность:
(Label1) Caption =
(Label5) Caption = Времени осталось:
(Label6) Caption =
Порядок меток у меня не совпал из-за многих перестановок в программе и т.п. Чтобы не переделывать код я не стал их сортировать.
MediaPlayer
Этот компонент используется для проигрывания аудио и видео файлов. Он имеет стандартные кнопки для управления файлами мультимедиа. Элемент может использоваться и без стандартной панели, а с помощью соответствующих команд:
MediaPlayer1->Play();
MediaPlayer1->Pause();
MediaPlayer1->Stop();
И т.п.
В этой работе нам понадобятся только 3. Будем использовать стандартные клавиши. Выставим следующие опции:
Переходим в Visible Buttons:
btPlay = true
btPause = true
btStop = true
все остальные в false
Так же обратим внимание на опцию Display. Эта опция определяет положения окна воспроизведения при проигрывании видео файлов. Оставим эту опцию пустой. В случае если будет открыт видео файл, то программа его проиграет в отдельном окне, если на это не надо будут дополнительные кодеки. Можно поставить это окно в какой-то элемент, например ListBox.
Timers
Timer - не визуальный компонент основной опцией которого является interval. А действие OnTimer которое определяет действие по истечению времени равного заданному в interval (время задается в миллисекундах)
Ставим для обеих таймеров опции:
Enabled = false
Interval = 1000
OpenDialog
Это не визуальный компонент, который вызывает стандартное окно windows для открытия файлов.
Для этого компонента все опции будем использовать равные по умолчанию.
TrackBar
Компонент, имеющий вид ползунка, который может перемещаться мышкой или клавишами во время исполнения. Этот элемент будем использовать для управления громкостью.
Выставим следующие опции для него:
Orientation = trVertical
Max = 0
Min = -65535
ThumbLength = 10
TickMarks = tmBoth
Frequency = 8192
ShowHint = true
Hint = Volume
Готовая форма будет иметь вид:
меню файл воспроизведение плеер аудио
Теперь пропишем код на действия элементов:
Для начала огласим переменные:
int index, key, ms, ms1, t=0;
так же создадим функцию для регуляции громкости:
union TVolume {
unsigned long Volume;
struct
{
Word Left;
Word Right;
};
} volume;
MainMenu
Для кнопки Add ставим действие OnClick и прописываем туда код:
// ----- добавление в список
if (OpenDialog1->Execute())
{
ListBox1->Items->Add(OpenDialog1->FileName);
if (ListBox1->Items->Count==1){
MediaPlayer1->FileName=ListBox1->Items->Strings[0];
MediaPlayer1->Notify=true; }
Для кнопки Exit на действие OnClick пишем:
Close();
PopupMenu
Add OnClick:
// ----- добавление в список
if (OpenDialog1->Execute())
{
ListBox1->Items->Add(OpenDialog1->FileName);
if (ListBox1->Items->Count==1){
MediaPlayer1->FileName=ListBox1->Items->Strings[0];
MediaPlayer1->Notify=true; }
Delete OnClick:
ListBox1->Items->Delete(ListBox1->ItemIndex);
Review OnClick:
if (Form1->Rew->Checked==true)
Form1->Rew->Checked=false;
else
Form1->Rew->Checked=true;
ListBox
Действие OnDblClick:
index = ListBox1->ItemIndex;
MediaPlayer1->Stop();
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
MediaPlayer1->Play();
// это действие обеспечит нам проигрывание файла по двойному клику на нем.
MediaPlayer
Действие OnClick:
key = 0;
// ------считываем со списка
if (ListBox1->ItemIndex<0)
index = 0;
else
index = ListBox1->ItemIndex;
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
// ---------ПОКАЗ ВРЕМЕНИ ПРОИГРЫВАЕМОГО ФАЙЛА
MediaPlayer1->TimeFormat=tfMilliseconds;
ms= MediaPlayer1->Length;
Label1->Caption=IntToStr((ms/1000)/60)+ " мин." +
" " + IntToStr((ms/1000) %60) + " секунд";
Label3->Caption=ListBox1->Items->Strings[index];
// ---- переход на след. фаил по окончанию
Timer1->Interval=ms;
Timer1->Enabled=true;
Timer2->Enabled=true;
Timer1
Действие OnTimer:
MediaPlayer1->Stop();
if (index<ListBox1->Items->Count-1)
index=index+1;
else
{
if (Form1->Rew->Checked==true)
index=0;
else {
key =1;
Timer1->Enabled=false;
Timer2->Enabled=false;}
}
if (key !=1) {
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
MediaPlayer1->Play();
// -ПОКАЗ ВРЕМЕНИ ПРОИГРЫВАЕМОГО ФАЙЛА
MediaPlayer1->TimeFormat=tfMilliseconds;
ms= MediaPlayer1->Length;
Label1->Caption=IntToStr((ms/1000)/60)+ " мин." +
" " + IntToStr((ms/1000) %60) + " секунд";
Label3->Caption=ListBox1->Items->Strings[index];
// ---- переход на след. фаил по окончанию
Timer1->Interval=ms;
}
Timer2:
Действие OnTimer:
ms=ms-1000;
Label6->Caption=IntToStr(ms/1000/60)+ " мин." +
" " + IntToStr(ms/1000 %60) + " секунд";
TrackBar
Действие OnChange:
volume.Left= - TrackBar1->Position;
volume.Right= - TrackBar1->Position;
waveOutSetVolume(0, volume.Volume);
Полный код программы будет иметь вид:
//--
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "filectrl.hpp"
//-
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int index, key, ms, ms1;
union TVolume {
unsigned long Volume;
struct
{
Word Left;
Word Right;
};
} volume;
//--
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//-
//--
void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,
TMPBtnType Button, bool &DoDefault)
{
key = 0;
// ------считываем со списка
if (ListBox1->ItemIndex<0)
index = 0;
else
index = ListBox1->ItemIndex;
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
// --ПОКАЗ ВРЕМЕНИ ПРОИГРЫВАЕМОГО ФАЙЛА
MediaPlayer1->TimeFormat=tfMilliseconds;
ms= MediaPlayer1->Length;
Label1->Caption=IntToStr((ms/1000)/60)+ " мин." +
" " + IntToStr((ms/1000) %60) + " секунд";
Label3->Caption=ListBox1->Items->Strings[index];
// ---- переход на след. фаил по окончанию
Timer1->Interval=ms;
Timer1->Enabled=true;
Timer2->Enabled=true;
}
//-
//-
void __fastcall TForm1::Add1Click(TObject *Sender)
{
// ----- добавление в список
if (OpenDialog1->Execute())
{
ListBox1->Items->Add(OpenDialog1->FileName);
if (ListBox1->Items->Count==1){
MediaPlayer1->FileName=ListBox1->Items->Strings[0];
MediaPlayer1->Notify=true; }
}
}
//-
void __fastcall TForm1::Add2Click(TObject *Sender)
{
// - добавление в список
if (OpenDialog1->Execute())
{
ListBox1->Items->Add(OpenDialog1->FileName);
if (ListBox1->Items->Count==1)
{
MediaPlayer1->FileName=ListBox1->Items->Strings[0];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
}
}
}
//--
void __fastcall TForm1::Delete1Click(TObject *Sender)
{
ListBox1->Items->Delete(ListBox1->ItemIndex);
}
//-
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
MediaPlayer1->Stop();
if (index<ListBox1->Items->Count-1)
index=index+1;
else
{
if (Form1->Rew->Checked==true)
index=0;
else {
key =1;
Timer1->Enabled=false;
Timer2->Enabled=false;}
}
if (key !=1) {
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
MediaPlayer1->Play();
// -ПОКАЗ ВРЕМЕНИ ПРОИГРЫВАЕМОГО ФАЙЛА
MediaPlayer1->TimeFormat=tfMilliseconds;
ms= MediaPlayer1->Length;
Label1->Caption=IntToStr((ms/1000)/60)+ " мин." +
" " + IntToStr((ms/1000) %60) + " секунд";
Label3->Caption=ListBox1->Items->Strings[index];
// ---- переход на след. фаил по окончанию
Timer1->Interval=ms;
}
}
//-
void __fastcall TForm1::RewClick(TObject *Sender)
{
if (Form1->Rew->Checked==true)
Form1->Rew->Checked=false;
else
Form1->Rew->Checked=true;
}
//-
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
ms=ms-1000;
Label6->Caption=IntToStr(ms/1000/60)+ " мин." +
" " + IntToStr(ms/1000 %60) + " секунд";
}
//-
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
Close();
}
//-
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
index = ListBox1->ItemIndex;
MediaPlayer1->Stop();
MediaPlayer1->FileName=ListBox1->Items->Strings[index];
MediaPlayer1->Open();
MediaPlayer1->Notify=true;
MediaPlayer1->Play();
// -ПОКАЗ ВРЕМЕНИ ПРОИГРЫВАЕМОГО ФАЙЛА
MediaPlayer1->TimeFormat=tfMilliseconds;
ms= MediaPlayer1->Length;
Label1->Caption=IntToStr((ms/1000)/60)+ " мин." +
" " + IntToStr((ms/1000) %60) + " секунд";
Label3->Caption=ListBox1->Items->Strings[index];
// - переход на след. фаил по окончанию
Timer1->Interval=ms;
Timer1->Enabled=true;
Timer2->Enabled=true;
}
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
volume.Left= - TrackBar1->Position;
volume.Right= - TrackBar1->Position;
waveOutSetVolume(0, volume.Volume);
}
//-
Вид работающего проигрывателя:
НТУУ «КПИ»
Размещено на Allbest.ru
Подобные документы
Сравнительная характеристика программ-аналогов. Разработка мультимедиа-проигрывателя по систематизированной обработке музыкальных файлов. Создание удобного пользовательского интерфейса. Поддержка списка воспроизведения, базовые функции управления.
курсовая работа [1,1 M], добавлен 02.02.2014Создание информационной мультимедиа системы (медиа-плеера) для презентации аудио-видео информации о факультете КТАС, представленной в специально отснятых и смонтированных avi-файлах. Разработка модуля пользовательского интерфейса, выходные данные.
курсовая работа [41,5 K], добавлен 21.11.2014Формат звукового файла wav, способ его кодирования. Реализация возможностей воспроизведения звука в среде программирования MATLAB. Составление функциональной схемы программы. Апробирование информационной технологии воспроизведения звуковых файлов.
курсовая работа [1,2 M], добавлен 13.02.2016Система управления базой данных - программный инструмент создания БД и приложений пользователя. Проект СУБД "ИС Продажа видео и аудио продукции". Разработка иерархической, сетевой и реляционной моделей, таблиц и схемы базы данных, форм, отчетов, запросов.
курсовая работа [1,6 M], добавлен 17.06.2013Разработка приложения, которое содержит данные об экспонатах и выставках. Создание базы данных и добавление элемента с информацией в любую позицию списков. Добавление и удаление экспонатов с выставки. Сохранение всех списков в файлы, составление отчета.
курсовая работа [1,2 M], добавлен 02.07.2014Оболочка Norton Commander. Командная строка программы. Работа с меню. Редактирование файлов. Параметры конфигурации. Структура файлов оболочки. Создание и настройка меню команд пользователя. Определение действий в зависимости от расширения имени файла.
реферат [171,6 K], добавлен 17.06.2008Разработка мультимедиа-программы для прослушивания аудио-файлов и просмотров видео. Описание меню для пользователей и для администраторов проекта. Создание форм для указанного приложения при помощи Visual Foxpro 9. Листинг программы и ее результаты.
курсовая работа [1,9 M], добавлен 27.07.2013Определение ресурсов до начала работы программы, их добавление в исполняемый файл. Возможность использования атрибутов в качестве ресурсов, их создание программистом в программе. Применение символьных строк в приложениях. Основные виды меню приложения.
реферат [32,2 K], добавлен 03.10.2010Создание оболочки для воспроизведения аудиофайлов. Аналитический обзор языков программирования, их сравнительные характеристики, описание предметной области и формата mp3. Алгоритм разработки инсталляционного пакета. Диаграмма деятельности объектов.
курсовая работа [581,3 K], добавлен 30.01.2014Характеристика программы Winamp — универсального проигрывателя от компании Nullsoft для воспроизведения файлов мультимедиа и потоковой передачи в среде Microsoft Windows. Описание интерфейса и настройка программы. Алгоритм создания музыкальной библиотеки.
курсовая работа [1,5 M], добавлен 15.02.2013