首页 VC课程设计--多媒体播放器12页

VC课程设计--多媒体播放器12页

举报
开通vip

VC课程设计--多媒体播放器12页...............精品资料...............【精品资料】第PAGE10页VC课程设计--多媒体播放器学号:0121210680531课程设计课程名称可视化编程(VC)学院计算机科学与技术学院专业软件工程班级1202姓名指导教师2013——2014学年第2学期目录设计题目及要求……………………………………3基本功能描述………………………………………4软件设计模块………………………………………63.1文件的打开模块……………………………………...

VC课程设计--多媒体播放器12页
...............精品资料...............【精品资料】第PAGE10页VC课程设计--多媒体播放器学号:0121210680531课程设计课程名称可视化编程(VC)学院计算机科学与技术学院专业软件 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 班级1202姓名指导教师2013——2014学年第2学期目录设计题目及要求……………………………………3基本功能描述………………………………………4软件设计模块………………………………………63.1文件的打开模块……………………………………….63.2文件的播放模块………………………………………93.3文件的停止模块……………………………………….93.4全屏模块……………………………………………….93.5快进、快退模块……………………………………….93.6换皮肤模块……………………………………………103.7音量调节模块…………………………………………123.8窗口隐藏模块…………………………………………123.9文件暂停模块…………………………………………124.运行结果……………………………………………….135.设计过程中遇到的问题和感想…………………156.参考文献…………………………………………16一、设计题目及要求1.1设计题目基于MFC的多媒体播放器系统1.2题目要求1.制作一个具有自己设计风格的媒体播放器。2.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。3.要求能播放多种 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 (至少四种或四种以上)的音频视频格式文件。4.可以实现其它附加功能(不在要求范围之内)5.界面良好,功能完善二、基本功能描述本次课程设计制作的多媒体播放器是利用Windows系统自带的WindowsMediaPlayer控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。还通过更换位图的方式,实现了换皮肤功能。打开文件:通过选择文件类型打开不同类型的文件,如果打开的格式不对,消息框会提醒打开正确的格式的文件。再打开文件前,其他按键不能进行操作。播放文件:开始播放文件。停止播放:停止播放文件。全屏:将播放器变为全屏。快退、快进:实现快退、快进功能。换皮肤:选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。音量调节:可以实现调大,调小音量的功能。三、软件设计模块3.1文件的打开模式在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。打开文件代码:voidCWavePlayDlg::OnOpen()//TODO:AddyourcontrolnotificationhandlercodehereCFileDialogOpenDlg(TRUE);switch(this->m_MediaType)case1:charszFileFilter[]={"Mp3File(*.mp3)|*.mp3|""MPEGFile(*.mpeg)|*.mpeg|""MediaFile(*.asf)|*.asf|""VideoFile(*.dat)|*.dat|""MPGAFile(*.mpga)|*.mpga|""WaveFile(*.wav)|*.wav|""AVIFile(*.avi)|*.avi|""MovieFile(*.mov)|*.mov|""MidFile(*.mid;*,rmi)|*.mid;*.rmi|""WmaFile(*.wma)|*.wma|""AllFile(*.*)|*.*||"CFileDialogfileDialog(TRUE,_T("wav"),NULL,NULL,_T("wav音频文件(*.wav)|*.wav||"));//选择wav模式if(fileDialog.DoModal()==IDOK)m_filename=fileDialog.GetPathName();break;case2:charszFileFilter[]={"Mp3File(*.mp3)|*.mp3|""MPEGFile(*.mpeg)|*.mpeg|""MediaFile(*.asf)|*.asf|""VideoFile(*.dat)|*.dat|""MPGAFile(*.mpga)|*.mpga|""WaveFile(*.wav)|*.wav|""AVIFile(*.avi)|*.avi|""MovieFile(*.mov)|*.mov|""MidFile(*.mid;*,rmi)|*.mid;*.rmi|""WmaFile(*.wma)|*.wma|""AllFile(*.*)|*.*||"CFileDialogfileDialog(TRUE,_T("avi"),NULL,NULL,_T("avi音频文件(*.avi)|*.avi||"));//选择avi模式if(fileDialog.DoModal()==IDOK)m_filename=fileDialog.GetPathName();break;case3:charszFileFilter[]={"Mp3File(*.mp3)|*.mp3|""MPEGFile(*.mpeg)|*.mpeg|""MediaFile(*.asf)|*.asf|""VideoFile(*.dat)|*.dat|""MPGAFile(*.mpga)|*.mpga|""WaveFile(*.wav)|*.wav|""AVIFile(*.avi)|*.avi|""MovieFile(*.mov)|*.mov|""MidFile(*.mid;*,rmi)|*.mid;*.rmi|""WmaFile(*.wma)|*.wma|""AllFile(*.*)|*.*||"CFileDialogfileDialog(TRUE,_T("mid"),NULL,NULL,_T("avi音频文件(*.mid)|*.mid||"));//选择mid模式if(fileDialog.DoModal()==IDOK)m_filename=fileDialog.GetPathName();break;case4:charszFileFilter[]={"Mp3File(*.mp3)|*.mp3|""MPEGFile(*.mpeg)|*.mpeg|""MediaFile(*.asf)|*.asf|""VideoFile(*.dat)|*.dat|""MPGAFile(*.mpga)|*.mpga|""WaveFile(*.wav)|*.wav|""AVIFile(*.avi)|*.avi|""MovieFile(*.mov)|*.mov|""MidFile(*.mid;*,rmi)|*.mid;*.rmi|""WmaFile(*.wma)|*.wma|""AllFile(*.*)|*.*||"CFileDialogfileDialog(TRUE,_T("mp3"),NULL,NULL,_T("mp3音频文件(*.mp3)|*.mp3||"));//选择MP3模式if(fileDialog.DoModal()==IDOK)m_filename=fileDialog.GetPathName();break;this->m_FileName.SetWindowText(m_filename);this->m_CloseButton.EnableWindow(true);this->m_playbotton.EnableWindow(true);voidCWavePlayDlg::OnRadio1()//选择不同类型的文件//TODO:Addyourcontrolnotificationhandlercodeherem_MediaType=1;voidCWavePlayDlg::OnRadio2()//TODO:Addyourcontrolnotificationhandlercodeherem_MediaType=2;voidCWavePlayDlg::OnRadio3()//TODO:Addyourcontrolnotificationhandlercodeherem_MediaType=3;voidCWavePlayDlg::OnRadio4()//TODO:Addyourcontrolnotificationhandlercodeherem_MediaType=4;3.2文件的播放模块在.WavePlayDlg.h中添加#include"wmpcontrols.h"、#include"wmpsettings.h"文件播放代码:voidCWavePlayDlg::OnPlay()//TODO:Addyourcontrolnotificationhandlercodeherem_play.SetUrl(m_filename);this->m_full.EnableWindow(true);this->m_decvolum.EnableWindow(true);this->m_addvolum.EnableWindow(true);this->m_fast.EnableWindow(true);this->m_slow.EnableWindow(true);3.3文件的停止模块voidCWavePlayDlg::OnClose()//TODO:Addyourcontrolnotificationhandlercodeherem_play.close();3.4全屏模块voidCWavePlayDlg::Onfullscreen()//TODO:Addyourcontrolnotificationhandlercodeherem_play.SetFullScreen(1);3.5快进、快退模块voidCWavePlayDlg::Onfast()快进//TODO:Addyourcontrolnotificationhandlercodeherem_play.GetControls().fastForward();voidCWavePlayDlg::Onslow()快退//TODO:Addyourcontrolnotificationhandlercodeherem_play.GetControls().fastReverse();3.6换皮肤模块定义一个int型的全局变量m_change,选择不同的按钮会给m_change赋不同的值,在onpaint函数中根据m_change不同的值来设置不同的背景。换皮肤代码:voidCWavePlayDlg::Onshamo()//TODO:Addyourcontrolnotificationhandlercodeherem_change=1;Invalidate();voidCWavePlayDlg::Oncaodi()//TODO:Addyourcontrolnotificationhandlercodeherem_change=2;Invalidate();voidCWavePlayDlg::Ondengta()//TODO:Addyourcontrolnotificationhandlercodeherem_change=3;Invalidate();voidCWavePlayDlg::Onyujinx()//TODO:Addyourcontrolnotificationhandlercodeherem_change=4;Invalidate();voidCWavePlayDlg::OnPaint()if(this->m_change==1)//实现换皮肤功能CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP2);CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);elseif(this->m_change==2)CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP5);CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);elseif(this->m_change==3)CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP4);CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);elseif(this->m_change==4)CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP6);CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);elseCPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP9);CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);3.7音量调节模块voidCWavePlayDlg::Ondecvolum()//减小音量//TODO:Addyourcontrolnotificationhandlercodeherem_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()-10);voidCWavePlayDlg::OnAddvolum()//增大音量//TODO:Addyourcontrolnotificationhandlercodeherem_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()+10);3.8窗口隐藏模块voidCWavePlayDlg::OnClose2()//TODO:Addyourcontrolnotificationhandlercodeherem_play.CloseWindow();3.9文件暂停模块voidCWavePlayDlg::OnPause()//TODO:Addyourcontrolnotificationhandlercodeherem_play.GetControls().pause();四、运行结果播放.MP3文件播放.avi文件换皮肤窗口隐藏五、设计过程中遇到的问题最先想基于MMcontrol插件来写这个程序,发现这个插件很难实现播放视频,调节音量等功能,便改用了windowsmediaplayer插件来完成。在编写程序过程中遇到了不少问题,在实现暂停功能时报错,后来查看相关资料才发现没有加上#include"wmpcontrols.h"、#include"wmpsettings.h"头文件。在给对话框添加背景后发现文本框没有透明化,通过百度查找相关资料才知道要加上一段代码,同时还可以给文本框里的文字改变颜色。代码如下:HBRUSHCWavePlayDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)HBRUSHhbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);if(nCtlColor==CTLCOLOR_STATIC)pDC->SetBkMode(TRANSPARENT);//设置背景透明pDC->SetTextColor(RGB(0,0,0));//设置字体颜色return(HBRUSH)::GetStockObject(NULL_BRUSH);//TODO:如果默认的不是所需画笔,则返回另一个画笔returnhbr;//TODO:Returnadifferentbrushifthedefaultisnotdesiredreturnhbr;在引入位图时,因为不知道只能引入.bmp类型的图片一直出现错误,后来请教同学才知道了图片应为.bmp类型并且256位以下。在实现换皮肤的功能时也遇到了问题,不知道要通过什么方式来改变使用的位图,后来想到可以采取和打开不同类型的文件相同的方式来改变选择使用的位图,可是又不知道该使用哪种刷新窗口方式来实现这个功能,最后还是通过百度窗口刷新方法确定使用Invalidate()。在完成这个作业的过程中,让我对MFC有了更加深刻的了解,通过去图书馆借阅资料及网上查阅资料学到了很多书本以外的东西,也知道了我们学习知识不应该仅仅局限于课本,应该查阅多方面的资料。任何学习都是应该多实践,只有自己多做才能真的掌握这些知识。六、参考文献《Vc++6.0数据库开发实例》人民邮电出版社《vc++面向对象与可视化程序设计》黄维通清华大学出版社本科生课程设计成绩评定表姓名熊琦性别女专业、班级软件1202班课程设计题目:基于MFC的多媒体播放器系统课程设计答辩或质疑 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 :成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:2014年6月19日
本文档为【VC课程设计--多媒体播放器12页】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
人生旅程
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:11
分类:
上传时间:2022-02-17
浏览量:0