您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > MFC音乐播放器(实验报告)
音乐播放器大型实验报告一、实验目的通过动手制作基于VC++的音乐播放器,了解播放器的原理。并通过自己动手,在windows播放器组件的基础上,用自己的算法,去实现自己的界面和自己的播放模式。二、总体设计(1)在visualc++环境下设计出一个音乐播放器的界面:具有打开音乐文件、播放歌曲,、暂停或恢复、停止、调节音量大小的功能;(2)修改各个控件的属性,并为其添加消息函数;(3)用媒体控制接口MCI编程为各个消息函数添加代码;(4)对该音乐播放器编译--运行。音乐播放器打开文件播放歌曲暂停播放停止播放音量控制三、实验步骤(一):创建MFC应用程序框架:打开visualc++软件,选择“文件”—“新建”新建一个应用程序文档MFCAppWizard[exe],将工程命名为MFC音乐播放器,选择合适的保存位置,然后“确定”选择基本对话框,完成设置。(二)编辑对话框:在工作区内,设计出一个音乐播放器的界面,添加按钮控件:浏览、播放、暂停、停止,添加一个滑动条控件,一个静态文本,两个编辑框。然后,依次修改各控件的属性:1)右击静态文本,选择属性,将标题改为音乐名称:2)右击编辑框,选择属性,将ID改为IDC_filename3)右击Button1,选择属性,将ID改为IDC_filechoice,将标题改为浏览3)右击Button2,选择属性,将ID改为IDC_play,将标题改为播放4)右击Button3,选择属性,将ID改为IDC_pause,将标题改为暂停5)右击Button4,选择属性,将ID改为IDC_stop,将标题改为停止6)右击滑块,ID改为IDC_SLIDER单击样式,点[P]:选择顶端/左侧,选择打勾标记。7)右击编辑框,将ID改为IDC_vol音乐播放器的界面已经设计完毕,为:(三)添加代码1)在头文件处添加#includeMmsystem.h#includeDigitalv.h#pragmacomment(lib,Winmm.lib)2)定义全局变量及成员函数。//定义三个全局变量HWNDm_hWnd;DWORDDeviceID;MCI_OPEN_PARMSmciopenparms;voidLoad(HWNDhWnd,CStringstrFilepath){m_hWnd=hWnd;mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加载文件前先清空上一次播放的设备mciopenparms.lpstrElementName=strFilepath;//将音乐文件路径传给设备DWORDdwReturn;if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)(LPVOID)&mciopenparms)){//如果打开文件失败,则将出错信息储存在buffer,并显示出错警告charbuffer[256];mciGetErrorString(dwReturn,buffer,256);MessageBox(hWnd,buffer,出错警告!,MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP);}DeviceID=mciopenparms.wDeviceID;//打开文件成功就关联文件到设备}voidplay(){MCI_PLAY_PARMSmciplayparms;mciplayparms.dwCallback=(DWORD)m_hWnd;mciplayparms.dwFrom=0;//每次播放都是从0开始播放mciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciplayparms);}voidpause(){mciSendCommand(DeviceID,MCI_PAUSE,0,0);}voidresume(){mciSendCommand(DeviceID,MCI_RESUME,0,0);}voidstop(){mciSendCommand(DeviceID,MCI_STOP,0,0);mciSendCommand(DeviceID,MCI_CLOSE,0,0);//当点击停止按钮时,将所有的信息都清除掉}DWORDsetvolume(DWORDvol){MCI_DGV_SETAUDIO_PARMSsetvolume;//这是设置音量的参数数据结构setvolume.dwCallback=NULL;setvolume.dwItem=MCI_DGV_SETAUDIO_VOLUME;//动作是设置音量setvolume.dwValue=vol;//音量值是volmciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV_SETAUDIO_VALUE,(DWORD)(LPVOID)&setvolume);return0;}3)编辑各个控件的代码A)双击“浏览”按钮,弹出一个对话框,选择OK,出现代码,添加: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)-EnableWindow(true);GetDlgItem(IDC_stop)-EnableWindow(true);}B)双击“播放”按钮,弹出一个对话框,选择OK,出现代码,添加:play();SetDlgItemText(IDC_pause,暂停);C)双击“暂停”按钮,弹出一个对话框,选择OK,出现代码,添加:CStringstrtemp;GetDlgItemText(IDC_pause,strtemp);//获取按钮状态if(strtemp.Compare(暂停)==0){pause();SetDlgItemText(IDC_pause,恢复);}if(strtemp.Compare(恢复)==0){resume();SetDlgItemText(IDC_pause,暂停);}D)双击“停止”按钮,弹出一个对话框,选择OK,出现代码,添加:stop();SetDlgItemText(IDC_pause,暂停);GetDlgItem(IDC_play)-EnableWindow(false);//当stop按钮按下时,播放和暂停应该均不可用GetDlgItem(IDC_pause)-EnableWindow(false);E)编辑滑块及编辑框按钮。右击滑块,选择建立类向导,选择MemberVariables,选择AddVarriable…,在Membervariablename:处改为m_slider.Category:处改为Control右击编辑框,操作同滑块,Membervariablename:处改为m_int.。Variabletype:处改为int右击滑块,选择建立类向导,在MessageMaps页面,ObjectIDs:选择IDC_SLIDER,在Messages:处选择NM_CUSTOMDRAW。添加滑块及编辑框的代码在图示位置处添加m_slider.SetRange(0,1000);//滑块的移动范围0~1000m_slider.SetPos(500);//滑块指针的初始位置设为500代表初始音量为50GetDlgItem(IDC_play)-EnableWindow(false);//文件没有读取时所有按钮应该是不可选的GetDlgItem(IDC_pause)-EnableWindow(false);GetDlgItem(IDC_stop)-EnableWindow(false);双击滑块按钮,弹出一个对话框,选择OK,添加代码UpdateData(true);m_int=m_slider.GetPos()/10;setvolume(m_slider.GetPos());UpdateData(false);四、调试运行调试时无错误,运行时出来一个MFC界面,就可以添加歌曲,播放音乐了。至此一个简单的音乐播放器就完成了。五、总结分析通过此次实验,我不仅再次熟悉了visualC++环境,还学会了如何使用MCI在visualC++环境下制作一个音乐播放器,,而且也牢固的掌握了媒体控制接口MCI的编程接口知识,当真的做出一个简单的音乐播放器时,非常的开心。以后要多多学习这方面的知识,争取了解更多的软件基本原理。
本文标题:MFC音乐播放器(实验报告)
链接地址:https://www.777doc.com/doc-5747133 .html