简单音乐播放器实验报告副本Word下载.docx
《简单音乐播放器实验报告副本Word下载.docx》由会员分享,可在线阅读,更多相关《简单音乐播放器实验报告副本Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
Xxxxxxx
一、课题描述
音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。
利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个功能非常简单易于操作的MP3播放器。
要求能够播放常用Windows音频格式的文件;
实现播放控制:
播放、暂停、音量增减、添加歌曲等功能;
实现从本地磁盘加入文件,然后对其进行播放。
本程序是基于MFC对话框的简单程序实现音乐的简单控制。
二、功能分析
MFC简单音乐播放器主要对常用Windows音频格式的文件实现播放控制:
播放歌曲、暂停播放、停止播放等;
实现音量控制:
静音、声音放大以及声音减小的功能。
利用MCI基本知识实现相关功能。
通过该程序可以实现简单的音乐播放。
核心是让音乐文件和音乐播放设备关联。
三、源代码和截图
具体属性和类向导如下:
实现后截图:
四、实验心得:
实现播放时间的控制是我在实验时遇到的难题,通过上网查询资料得以实现。
制作音乐播放器其实是个挺有趣的体验,完成了也有小小成就感。
但这个简易音乐播放器还有许多功能尚未实现,例如同步歌词显示等等,要真正做一个完善的播放器还需要很多努力。
各个控件的函数如下:
//浏览
voidCMFCDlg:
:
Onfilechoice()
{
charszFileFilter[]="
mp3文件(*.mp3)|*.mp3|"
"
wma文件(*.wma)|*.wma|"
wav文件(*.wav)|*.wav|"
所有文件(*.*)|*.*|"
;
CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
CStringstrFilepath=dlg.GetPathName();
CStringstrFilename=dlg.GetFileName();
SetDlgItemText(IDC_filename,strFilename);
Load(this->
m_hWnd,strFilepath);
GetDlgItem(IDC_play)->
EnableWindow(true);
//文件读取成功时所有按钮变可选的
GetDlgItem(IDC_pause)->
GetDlgItem(IDC_stop)->
m_list.InsertString(m_list.GetCount(),strFilename);
m_list.SetCurSel(m_list.GetCount()-1);
}
}
//播放
Onplay()
CStringstrfilename;
intindex=m_list.GetCurSel();
CStringmtime;
CClientDCdc(this);
hour=0;
minute=0;
second=0;
dc.SetBkColor(RGB(124,252,0));
//设置放置计数器区域的外观
dc.SetTextColor(RGB(255,255,203));
//设置数字显示的颜色
mtime.Format("
%02d:
%02d"
hour,minute,second);
//显示时间进度
dc.TextOut(320,85,mtime);
if(index==-1)
MessageBox("
请添加音乐"
);
return;
m_list.GetText(index,strfilename);
SetDlgItemText(IDC_filename,strfilename);
stop();
m_hWnd,strfilename);
play();
SetTimer(0,1000,NULL);
//暂停
Onpause()
CStringstrtemp;
GetDlgItemText(IDC_pause,strtemp);
//获取按钮状态
if(strtemp.Compare("
暂停"
)==0)
pause();
SetDlgItemText(IDC_pause,"
恢复"
KillTimer(0);
//取消计数器的显示
resume();
//停止
Onstop()
EnableWindow(false);
//当stop按钮按下时,播放和暂停应该均不可用
GetDlgItem(IDC_del)->
//添加
Onfileopen()
charfilefiler[]="
CFileDialog
dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,filefiler);
if(dlg.DoModal()==IDOK)
{
CStringstrfilepath=dlg.GetPathName();
CStringstrfilename=dlg.GetFileName();
m_hWnd,strfilepath);
m_list.InsertString(m_list.GetCount(),strfilename);
//获取文件名
//删除
Ondel()
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
SetDlgItemText(IDC_filename,"
if(index!
=CB_ERR)
m_list.DeleteString(index);
OnTimer(UINTnIDEvent)
Addyourmessagehandlercodehereand/orcalldefault
second++;
if(second==60)
minute++;
if(minute==60){
hour++;
DWORDcdf=getinformation(MCI_STATUS_POSITION);
DWORDcdfrom;
cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf));
UpdateData(false);
CDialog:
OnTimer(nIDEvent);
//双击列表
OnDblclkList()
//上一首
Onprevious()