基于MFC多媒体播放器.doc
《基于MFC多媒体播放器.doc》由会员分享,可在线阅读,更多相关《基于MFC多媒体播放器.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大连理工大学软件学院本科生课程设计报告C/C课程设计项目报告目 录1 项目简介11。1项目名称11.2功能概述1 1.3 开发人员及职责。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.12 需求分析。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。12。1 功能需求.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.12.2 性能需求。.。.。.。.。.。.。.。.。.。.。.。
2、.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.23 系统设计。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.33。1 代码设计。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.33.2 流程图.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.134 系统实现及测试.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.
3、。.。.。.。.。.。.。.。.。.。.175 项目总结。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。205。1 总体总结。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.205。2 个人总结。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。21大连理工大学软件学院本科生课程设计报告1 项目简介1。1 项目名称多媒体播放器1。2 功能概述此款媒体播放器项目具有以下功能:(1)本地设定目录中包含音频文
4、件的浏览和播放(支持mp3格式)。(2)本地设定目录中包含图片文件的浏览(支持bmp格式)。(3)本地设定目录中包含视频文件的浏览和播放(支持mp4格式)。(4)最近播放列表功能,保存最近播放的10个文件,保存最近追加的10个文件。视频,音频,图片是分开的,都有最近播放列表和最近追加列表.1。3 开发人员及职责负责视频模块,以及最后的模块整合,报告的编写负责音频模块,报告的编写负责图片模块,报告的编写2 需求分析2.1。 功能需求本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进行查看。从其目标功能及特点分析,将本软件功能划分如下:(1) 视频播放器: 可以打开MP4格式的视频文
5、件。在本地文件夹中将MP4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至视频播放窗口. 在播放窗口里,查看视频时,有“播放”,“暂停”,“停止”功能。播放中,还有“前进,“后退”功能,即快进快退功能,以4秒为一个单位,这个单位也可以在代码中进行修改。在观看视频时,还有“上一曲,下一曲”功能,即查看之前添加在播放列表里的视频项.同时,也可以选择播放模式“循环,顺序,随机”,该功能也是基于播放列表实现的。在右边功能键里,还有音量调节,静音功能.除此以外,还可以进行全屏浏览,按“ESC”退出全屏。在主页面,还有两个数据框“最近追加项目和“最近播放项目”,可以直观地看到最近
6、播放项目,且可以手动清空所有项目.这两个列表只按照时间,保存最近的项目,且最多保存10个。(2) 音频播放器可以打开MP3格式的音频。在本地文件夹中将MP3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至音频播放窗口。并且,在主窗口,还有两个数据框“最近追加项目”和“最近播放项目,可以直观地看到最近播放项目,且可以手动清空所有项目.这两个列表只按照时间,保存最近的项目,且最多保存10个.(此处为该多媒体公共窗口,功能相同,下面的图片浏览器也是一样的。)在播放窗口里,听取音频时,有“播放,“暂停,“停止”功能.同样也会有“前进,后退”功能,“上一曲,下一曲”功能,播放模
7、式中的“循环,顺序,随机”,这些功能与上面所述的视频播放器相同。(3) 图片浏览器 可以打开BMP格式的图片.主窗口同视频、音频播放器一样,在此不多赘述。在浏览图片窗口中,会有“上一张,下一张”功能键,可以在“播放列表,最近播放项目,最近追加项目”任何一个列表中循环,可以自由选择。当图片浏览到所选列表的最后一张时,会自动循环至列表第一张.(4)在主窗口的中,在列表中已添加文件后,有两种方式可以打开文件。一是选中想要打开的文件,点击“播放文件”按钮,二是直接双击列表中的文件,便可进入到相应子窗口进行查看。(5)当单独拿出exe文件运行时,会自动在exe所在文件里创建9个文本文档,分别存放三个模块
8、(视频,音频,图片)的三个列表(播放列表,最近播放项目,最近追加项目)信息。2。2. 性能需求 (1)硬件平台要求由于本软件为单机软件,不需进行大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Windows操作系统的硬件平台,都能够使用本软件。(2)软件开发环境1.OS:Microsoft Windows XP SP22。Complier:Visual C+ 6。0 , Visual Studio 2005 Team System或更高版本 3. MSDN Library3 系统设计3。1.代码设计(1)音频、视频模块1。创建播放器对话框 右击Dialog,点击插入,在
9、弹出的对话框中点击Dialog,再点击新建。 双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。 右击,建立类向导,此时弹出Adding a class对话框,点击ok,输入name为player, 点击确定后退出。 再在对话框中右击,选择插入ActiveX控件,选择WindowsMedia Player,之后在对话框中可以看到一个视频控件。右击,选择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。再次右击视频控件,选择建立类向导。点击Member Variables,选择视频控件的ID(默认为ID_OCX1),点击Add Variables。此时会
10、弹出一个对话框。 点击确定后,弹出Comfirm Class对话框后,点击OK。此时可以看到建立了很多个类.之后为添加成员变量。Name为m_play,Category为Control,Variable Type为CWMPPlayer4.点击确定之后可以看到下面的效果。2.控件与函数 声明全局变量CString playname,用于记录播放地址;int ntype用于记录播放的类型;int num1,num2,num1用于记录播放的地址在播放列表中的位置,num2用于记录播放列表中总的播放地址。构建成员函数void player::Onplay(CString pname,int n,int
11、 m,int t)playname=pname; num1=n;num2=m;ntype=t; 将前台所选择播放的信息通过函数传递给播放器对话框中在对话框中放上以下几个控件。控件ID标题控件ID标题Push ButtonID_bofang播放Push ButtonID_zanting暂停Push ButtonID_tingzhi停止Push ButtonID_qianjing前进Push ButtonID_houtui后退Push ButtonID_shangyiqu上一曲Push ButtonID_xiayiqu下一曲Push ButtonID_yinjia+Push ButtonID_yi
12、njiang-Push ButtonID_jingyin静音Push ButtonID_quanping全屏Group BoxIDC_static播放模式Group BoxIDC_yinliangkongzhi音量控制RadioButtonIDC_XUNHUAN循环RadioButtonIDC_shunxu顺序RadioButtonIDC_suiji随机TextIDC_static时间进度TextID_timeStaticTextIDC_volumeStatic滑块IDC_SLIDER1控件排列如下并建立如下三个变量 添加全局变量int hour, minute, second; 右击对话框,
13、建立类向导,在Messages中选择WM_INITDIALOG,点击ADD Function,再点击Edit Code在BOOL player:OnInitDialog()函数中写入hour=0;minute=0;second=0;UpdateData(true);m_time.Format(%d:%d:d”,hour,minute,second);UpdateData(false); 让时间进度一开始为0; 同样的方法添加成员函数void player::OnTimer(UINT nIDEvent) 让时间进度能随着播放的音视频的进度而走. 添加成员函数void player::OnDest
14、roy() KillTimer(0);CDialog:OnDestroy();/ TODO: Add your message handler code here在退出播放器对话框时,让计数器停止.添加全局变量BOOL qian=false;若qian为true时,表示点击了前进或后退,此时点击播放时,继续播放.双击播放,点击确定,添加以下成员函数void player:Onbofang() if(!qian) m_play。SetUrl(playname); KillTimer(0);hour=minute=second=0;UpdateData(true);m_time。Format(”d
15、:d:%d,hour,minute,second);UpdateData(false); SetTimer(0,500,NULL);elsem_play。GetControls()。play();qian=false;点击播放时,也开始启动计时器同理,前进的成员函数void player:Onqianjing() 后退的成员函数void player::Onhoutui() 停止得成员函数void player:Ontingzhi() 停止时,时间进度变为0,同时计数器停止。暂停的成员函数void player:Onzanting() CString strtemp; GetDlgItemTe
16、xt(ID_zanting,strtemp);if (strtemp.Compare(暂停”)=0)m_play。GetControls().pause();SetDlgItemText(ID_zanting,”继续”); KillTimer(0);if (strtemp.Compare(继续”)=0)m_play.GetControls().play(); SetDlgItemText(ID_zanting,”暂停”);SetTimer(0,500,NULL); 点击暂停时,显示继续,此时计数器停止.当点击继续时,计数器又开始运行,同时显示出暂停。 定义成员变量int shape=2;默认值
17、为2,表示默认顺序播放.在循环,顺序,随机播放函数中,分别将shape赋值为1,2,3;创建成员函数void player:shunxubofang() CStdioFile fsp;if(ntype=3)fsp=new CStdioFile(。list.txt”,CFile::modeRead);else if(ntype=1)fsp=new CStdioFile(。list1。txt,CFile:modeRead);else if(ntype=4)fsp=new CStdioFile(。list21。txt”,CFile:modeRead);else if(ntype=5)fsp=new
18、CStdioFile(。list22.txt,CFile::modeRead); else if(ntype=6)fsp=new CStdioFile(”。list31.txt,CFile::modeRead); else if(ntype=7)fsp=new CStdioFile(”。list32。txt”,CFile:modeRead);CString str;if(num1=0)num1=num2;for(int i=0;iReadString(str); playname=str;fspClose();delete fsp;m_play.SetUrl(playname);num1-;此
19、函数用于上一曲的顺序播放。根据媒体类型与播放列表的不同,而选择打开的文件不同。若选择的是第一曲,上一曲为最后一曲.下一曲的顺序播放函数与上面类似,不过若选中为最后一曲时,则下一曲为第一曲。与上面的函数不同在于if(num1=num2-1)num1=0;elsenum1+;for(int i=0;i=num1;i+)fspReadString(str); playname=str;fspClose();delete fsp;m_play.SetUrl(playname); 随机播放为在0到总地址数之间随机生成一个数,然后播放次数字所对应的音视屏.与上面的函数不同在于 srand(time(0);
20、 int temp=rand()num2;上一曲的函数oid player::Onxiayiqu() / TODO: Add your control notification handler code here if(shape=1) m_play。SetUrl(playname); else if(shape=2) shunxubofang(); else if(shape=3) suijibofang();SetTimer(0,500,NULL); 根据shape的不同,所选择的函数也就不同。 在下一曲的函数中,与上面不同的是,当shape为2时,所调用的函数为shunxubofang2
21、();构建成员函数void player:nowvolume() UpdateData(true);m_volume.Format(”d,m_silder.GetPos()); UpdateData(false);使声音滑块所对应的数字呈现在静态文本框中。同时在OnInitDialog()中加入m_silder.SetRange(0,100); m_silder.SetPos(50);nowvolume();定义滑块的长度为100,刚开始时是50。音减的函数中void player:Onyinjiang() / TODO: Add your control notification handl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MFC 多媒体 播放
限制150内