1、Xxxxxxx一、课题描述音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个功能非常简单易于操作的MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、音量增减、添加歌曲等功能;实现从本地磁盘加入文件,然后对其进行播放。本程序是基于MFC对话框的简单程序实现音乐的简单控制。二、功能分析MFC简单音乐播放器主要对常用Windows音频格式的文件实现播放控制:播放歌曲、暂停播放、停止播放等;实现音量控制:静音、声音放大以及声音减小的功能。利用MCI基本知识实现相关功能。通过该程序可以实现简单的音乐播放。核
2、心是让音乐文件和音乐播放设备关联。三、源代码和截图具体属性和类向导如下:实现后截图:四、实验心得:实现播放时间的控制是我在实验时遇到的难题,通过上网查询资料得以实现。制作音乐播放器其实是个挺有趣的体验,完成了也有小小成就感。但这个简易音乐播放器还有许多功能尚未实现,例如同步歌词显示等等,要真正做一个完善的播放器还需要很多努力。各个控件的函数如下:/浏览void CMFCDlg:Onfilechoice() char szFileFilter=mp3文件(*.mp3)|*.mp3|wma文件(*.wma)|*.wma|wav文件(*.wav)|*.wav|所有文件(*.*)|*.*|;CFile
3、Dialog dlg(true,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(dlg.DoModal()=IDOK)CString strFilepath=dlg.GetPathName();CString strFilename=dlg.GetFileName();SetDlgItemText(IDC_filename,strFilename);Load(this-m_hWnd,strFilepath);GetDlgItem(IDC_play)-EnableWindow(true);/文件读取成功时所有按钮变可选的GetDlgItem(IDC_pau
4、se)-GetDlgItem(IDC_stop)-m_list.InsertString(m_list.GetCount(),strFilename);m_list.SetCurSel(m_list.GetCount()-1); /播放Onplay() CString strfilename;int index=m_list.GetCurSel();CString mtime;CClientDC dc(this);hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0);/设置放置计数器区域的外观dc.SetTextColor(RGB(255,
5、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() CString strtemp;GetDlgIte
6、mText(IDC_pause,strtemp);/获取按钮状态if(strtemp.Compare(暂停)=0)pause();SetDlgItemText(IDC_pause,恢复KillTimer(0);/取消计数器的显示resume();/停止Onstop() EnableWindow(false);/当stop按钮按下时,播放和暂停应该均不可用GetDlgItem(IDC_del)-/添加Onfileopen() char filefiler=CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OF
7、N_ENABLESIZING,filefiler);if (dlg.DoModal()=IDOK) CString strfilepath=dlg.GetPathName();CString strfilename=dlg.GetFileName();m_hWnd,strfilepath);m_list.InsertString(m_list.GetCount(),strfilename);/获取文件名/删除Ondel() / TODO: Add your control notification handler code hereUpdateData(TRUE);SetDlgItemText
8、(IDC_filename,if(index!=CB_ERR)m_list.DeleteString(index);OnTimer(UINT nIDEvent) Add your message handler code here and/or call defaultsecond+;if(second=60)minute+;if(minute=60)hour+;DWORD cdf=getinformation(MCI_STATUS_POSITION);DWORD cdfrom;cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf);UpdateData(false);CDialog:OnTimer(nIDEvent);/双击列表OnDblclkList() /上一首Onprevious()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1