VC课程设计多媒体播放器Word文件下载.docx
《VC课程设计多媒体播放器Word文件下载.docx》由会员分享,可在线阅读,更多相关《VC课程设计多媒体播放器Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
3.3文件的停止模块……………………………………….9
3.4全屏模块……………………………………………….9
3.5快进、快退模块……………………………………….9
3.6换皮肤模块……………………………………………10
3.7音量调节模块…………………………………………12
3.8窗口隐藏模块…………………………………………12
3.9文件暂停模块…………………………………………12
4.运行结果……………………………………………….13
5.设计过程中遇到的问题和感想…………………15
6.参考文献…………………………………………16
一、设计题目及要求
1.1设计题目
基于MFC的多媒体播放器系统
1.2题目要求
1.制作一个具有自己设计风格的媒体播放器。
2.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。
3.要求能播放多种格式(至少四种或四种以上)的音频视频格式文件。
4.可以实现其它附加功能(不在要求范围之内)
5.界面良好,功能完善
二、基本功能描述
本次课程设计制作的多媒体播放器是利用Windows系统自带的WindowsMediaPlayer控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。
还通过更换位图的方式,实现了换皮肤功能。
1.打开文件:
通过选择文件类型打开不同类型的文件,如果打开的格式不对,消息框会提醒打开正确的格式的文件。
再打开文件前,其他按键不能进行操作。
2.播放文件:
开始播放文件。
3.停止播放:
停止播放文件。
4.全屏:
将播放器变为全屏。
5.快退、快进:
实现快退、快进功能。
6.换皮肤:
选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。
7.音量调节:
可以实现调大,调小音量的功能。
三、软件设计模块
3.1文件的打开模式
在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。
打开文件代码:
voidCWavePlayDlg:
:
OnOpen()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CFileDialogOpenDlg(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:
{
"
avi"
avi音频文件(*.avi)|*.avi||"
//选择avi模式
case3:
mid"
avi音频文件(*.mid)|*.mid||"
//选择mid模式
case4:
mp3"
mp3音频文件(*.mp3)|*.mp3||"
//选择MP3模式
this->
m_FileName.SetWindowText(m_filename);
m_CloseButton.EnableWindow(true);
this->
m_playbotton.EnableWindow(true);
OnRadio1()//选择不同类型的文件
m_MediaType=1;
OnRadio2()
m_MediaType=2;
OnRadio3()
m_MediaType=3;
OnRadio4()
m_MediaType=4;
3.2文件的播放模块
在.WavePlayDlg.h中添加#include"
wmpcontrols.h"
、#include"
wmpsettings.h"
文件播放代码:
OnPlay()
m_play.SetUrl(m_filename);
m_full.EnableWindow(true);
this->
m_decvolum.EnableWindow(true);
m_addvolum.EnableWindow(true);
m_fast.EnableWindow(true);
m_slow.EnableWindow(true);
3.3文件的停止模块
OnClose()
m_play.close();
3.4全屏模块
Onfullscreen()
m_play.SetFullScreen
(1);
3.5快进、快退模块
Onfast()快进
m_play.GetControls().fastForward();
Onslow()快退
m_play.GetControls().fastReverse();
3.6换皮肤模块
定义一个int型的全局变量m_change,选择不同的按钮会给m_change赋不同的值,在onpaint函数中根据m_change不同的值来设置不同的背景。
换皮肤代码:
Onshamo()
m_change=1;
Invalidate();
Oncaodi()
m_change=2;
Ondengta()
m_change=3;
Onyujinx()
m_change=4;
Invalidate();
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)
bitmap.LoadBitmap(IDB_BITMAP5);
m_change==3)
bitmap.LoadBitmap(IDB_BITMAP4);
m_change==4)
bitmap.LoadBitmap(IDB_BITMAP6);
else
bitmap.LoadBitmap(IDB_BITMAP9);
……
3.7音量调节模块
Ondecvolum()//减小音量
m_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()-10);
OnAddvolum()//增大音量
m_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()+10);
3.8窗口隐藏模块
OnClose2()
m_play.CloseWindow();
3.9文件暂停模块
OnPause()
m_play.GetControls().pause();
四、运行结果
播放.MP3文件
播放.avi文件
换皮肤
窗口隐藏
五、设计过程中遇到的问题
最先想基于MMcontrol插件来写这个程序,发现这个插件很难实现播放视频,调节音量等功能,便改用了windowsmediaplayer插件来完成。
在编写程序过程中遇到了不少问题,在实现暂停功能时报错,后来查看相关资料才发现没有加上#include"
头文件。
在给对话框添加背景后发现文本框没有透明化,通过XX查找相关资料才知道要加上一段代码,同时还可以给文本框里的文字改变颜色。
代码如下:
HBRUSHCWavePlayDlg:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
HBRUSHhbr=CDialog:
OnCtlColor(pDC,pWnd,nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
pDC->
SetBkMode(TRANSPARENT);
//设置背景透明
SetTextColor(RGB(0,0,0));
//设置字体颜色
return(HBRUSH):
GetStockObject(NULL_BRUSH);
如果默认的不是所需画笔,则返回另一个画笔
returnhbr;
Returnadifferentbrushifthedefaultisnotdesired
在引入位图时,因为不知道只能引入.bmp类型的图片一直出现错误,后来请教同学才知道了图片应为.bmp类型并且256位以下。
在实现换皮肤的功能时也遇到了问题,不知道要通过什么方式来改变使用的位图,后来想到可以采取和打开不同类型的文件相同的方式来改变选择使用的位图,可是又不知道该使用哪种刷新窗口方式来实现这个功能,最后还是通过XX窗口刷新方法确定使用Invalidate()。
在完成这个作业的过程中,让我对MFC有了更加深刻的了解,通过去图书馆借阅资料及网上查阅资料学到了很多书本以外的东西,也知道了我们学习知识不应该仅仅局限于课本,应该查阅多方面的资料。
任何学习都是应该多实践,只有自己多做才能真的掌握这些知识。
六、参考文献
《Vc++6.0数据库开发实例》人民邮电出版社
《vc++面向对象与可视化程序设计》黄维通
清华大学出版社
本科生课程设计成绩评定表
熊琦
性别
女
专业、班级
软件1202班
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
2014年6月19日