多媒体播放器的设计与实现报告.docx

上传人:b****3 文档编号:10571077 上传时间:2023-05-26 格式:DOCX 页数:18 大小:183.62KB
下载 相关 举报
多媒体播放器的设计与实现报告.docx_第1页
第1页 / 共18页
多媒体播放器的设计与实现报告.docx_第2页
第2页 / 共18页
多媒体播放器的设计与实现报告.docx_第3页
第3页 / 共18页
多媒体播放器的设计与实现报告.docx_第4页
第4页 / 共18页
多媒体播放器的设计与实现报告.docx_第5页
第5页 / 共18页
多媒体播放器的设计与实现报告.docx_第6页
第6页 / 共18页
多媒体播放器的设计与实现报告.docx_第7页
第7页 / 共18页
多媒体播放器的设计与实现报告.docx_第8页
第8页 / 共18页
多媒体播放器的设计与实现报告.docx_第9页
第9页 / 共18页
多媒体播放器的设计与实现报告.docx_第10页
第10页 / 共18页
多媒体播放器的设计与实现报告.docx_第11页
第11页 / 共18页
多媒体播放器的设计与实现报告.docx_第12页
第12页 / 共18页
多媒体播放器的设计与实现报告.docx_第13页
第13页 / 共18页
多媒体播放器的设计与实现报告.docx_第14页
第14页 / 共18页
多媒体播放器的设计与实现报告.docx_第15页
第15页 / 共18页
多媒体播放器的设计与实现报告.docx_第16页
第16页 / 共18页
多媒体播放器的设计与实现报告.docx_第17页
第17页 / 共18页
多媒体播放器的设计与实现报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多媒体播放器的设计与实现报告.docx

《多媒体播放器的设计与实现报告.docx》由会员分享,可在线阅读,更多相关《多媒体播放器的设计与实现报告.docx(18页珍藏版)》请在冰点文库上搜索。

多媒体播放器的设计与实现报告.docx

多媒体播放器的设计与实现报告

 

《多媒体技术》

课程论文

 

题目:

基于MFC的多媒体播放器的设计与实现

专业:

班级:

姓名:

学号:

指导老师:

 

摘要:

本程序是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能的多媒体播放器。

具有打开文件、播放、暂停、全屏、音量调节、静音、快进、快退等基本播放功能。

系统开发平台为Windows7操作系统,程序设计环境采用VisualC++6.0。

 

关键字:

MFC,ActiveMovie,多媒体

 

1.开发工具及相关知识介绍

MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windowsAPI函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。

vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。

MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。

xx是版本,它封装了mfc内核,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。

一个MFC窗口对象是一个C++CWnd类(或派生类)的实例,是程序直接创建的。

在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。

而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。

Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。

Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。

ActiveX控件是基于COM的可重用组件,主要用于插入ActiveX控件包容器或Web页,ActiveX在外观上和使用上和普通控件一样,还提供属性页以支持在包容器的设计阶段对ActiveX控件的属性进行可视化设计。

现在多媒体技术正向二个方而发展:

一是网络化发展趋势,与宽带网络通信等技术相互结合,使多媒体技术进入科研设计、企业管理、办公自动化、远程教育、远程医疗、检索咨询,文化娱乐、自动测控等领域;二是多媒体终端的部件化、智能化和嵌入化,提高计算机系统本身的多媒体性能,开发智能化家电。

 

多媒体有三个关键特性:

多样性、交互性和集成性。

2.系统的功能说明  

2.1打开文件按钮  

单击打开按钮,选定需要播放的文件的路径并打开,则选定的文件将被添加到播放列表中。

 

2.2播放/暂停文件按钮  

单击暂停按钮,则播放暂停。

2.3播放进度滑块 

用户可以通过滑动播放进度滑块进行对播放进程的控制,实现音频视频文件播放的快进和快退。

 

2.4随机/顺序/单曲/全曲循环选项  

当用户勾选随机/顺序/单曲/全曲循环时,播放模式会切换到会转变到相应的模式下。

2.5上一曲/下一曲按钮

当用户单击该按钮时,播放的文件相应变化。

 

2.6音量调节滑块 

用户可以通过对音量调节滑块进行调节从而控制音量的大小。

2.7静音选项

选择该选项时将会静音。

 

2.8停止播放按钮 

单击该按钮,停止播放. 

2.9退出程序按钮  

单击退出程序按钮从播放器中退出。

3.所设计系统实现的各模块介绍 

3.1 流程图设计

 

3.2 各模块介绍 

 

 

本多媒体播放系统从界面上看分为四个部分:

播放界面、播放控制、播放列表和播放模式。

  

(1)播放界面:

可以看到背景图,还可以方便用户调整播放进度、音量大小,也能对音频和视频进行播放和暂停的控制。

 

(2)播放模式:

有顺序播放、循环播放、随机选择三种模式。

用户通过对这三种模式的选择可以控制音频视频的播放顺序。

 

(3)播放列表:

播放列表记录了被用户添加的需要播放的文件,方便用户在添加文件之后可以迅速找到需要播放的文件。

 

(4)播放控制:

主要包括媒体文件的打开、播放进度的调整、暂停、停止、全屏和程序的退出。

  

4.各模块源程序及主要部分

4.1.打开文件

voidCMediaPlayerDlg:

:

OnOpen()

{

m_listCtrl.SetFocus();CStringstr;

TCHARszFilter[]=_T("Mp3File(*.mp3)|*.mp3|WmaFile(*.wma)|*.wma|VideoFile(*.dat)|*.dat|WaveFile(*.wav)|*.wav|AVIFile(*.avi)|*.avi|MovieFile(*.mov)|*.mov|MediaFile(*.mmm)|*.mmm|MidFile(*.mid;*,rmi)|*.mid;*.rmi|MPEGFile(*.mpeg)|*.mpeg|AllFile(*.*)|*.*||");CFileDialogfileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,this);

CStringstrFilePath;

if(IDOK==fileDlg.DoModal())

{

strFilePath=fileDlg.GetPathName();

strFilePath.MakeUpper();

m_player.SetUrl(strFilePath);

m_media=static_cast(m_player.newMedia(strFilePath));

m_list.appendItem(m_media);

m_listCtrl.InsertItem(count,m_media.GetName());

m_listCtrl.SetItemText(count,1,_T(m_media.getItemInfo("FileType")));

m_listCtrl.SetItemText(count,2,_T(m_media.GetDurationString()));

m_listCtrl.SetItemText(count,3,_T(strFilePath));

m_listCtrl.SetItemText(count++,4,_T(m_media.getItemInfo("Duration")));

POSITIONpos;

pos=m_listCtrl.GetFirstSelectedItemPosition();

IndexInFieldList=m_listCtrl.GetNextSelectedItem(pos);

m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);

m_player.SetUrl(m_listCtrl.GetItemText(0,3));

m_listCtrl.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);

}

}

 

4.2播放

voidCMediaPlayerDlg:

:

OnPlay()

{

if(m_list.GetCount()<=0)MessageBox("列表无文件!

","Warning",MB_OK);

KillTimer(0);

m_control.play();

if(m_control.GetCurrentPosition()==0)

m_control.SetCurrentPosition(0.01);

SetTimer(0,20,NULL);

}

4.3暂停播放

voidCMediaPlayerDlg:

:

OnPause()

{

m_control.pause();

}

4.4停止播放

voidCMediaPlayerDlg:

:

OnStop()

{

KillTimer(0);

m_control.stop();

}

4.5全屏

voidCMediaPlayerDlg:

:

OnFullscreen()

{

if(!

m_player.GetFullScreen())

{

m_control.pause();

AfxMessageBox("请双击退出全屏模式!

");

m_player.SetFullScreen(true);

m_control.play();

}

}

4.6退出

voidCMediaPlayerDlg:

:

OnExit()

{

SendMessage(WM_CLOSE);

}

voidCAboutDlg:

:

OnOK()

{

//TODO:

Addextravalidationhere

CDialog:

:

OnOK();}

4.7添加背景图片

CPaintDCdc(this);

CRectrect;

GetClientRect(&rect);

CDCdcMem;

dcMem.CreateCompatibleDC(&dc);

CBitmapbmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP9);

BITMAPbitmap;

bmpBackground.GetBitmap(&bitmap);

CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,

bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

}

}

4.8添加软件图标

HCURSORCMediaPlayerDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

4.9顺序播放功能

voidCMediaPlayerDlg:

:

OnOrder()

{

m_order=0;

}

4.10随机播放功能

voidCMediaPlayerDlg:

:

OnRandom()

{

m_order=1;

}

4.11单曲循环功能

voidCMediaPlayerDlg:

:

OnSinglecircle()

{

m_order=3;

}

4.12全曲循环功能

voidCMediaPlayerDlg:

:

OnAllcircle()

{

m_order=2;

}

4.13播放列表

voidCMediaPlayerDlg:

:

OnPlaylist()

{

if(flag=!

flag)

{

SetWindowPos(NULL,0,0,420,454,SWP_NOMOVE);

}

else

{

SetWindowPos(NULL,0,0,720,454,SWP_NOMOVE);

}

}

4.14音量增加

voidCMediaPlayerDlg:

:

OnAdd()

{

m_setting.SetVolume(m_setting.GetVolume()+10);

m_VOLUME.SetPos(m_setting.GetVolume());

}

4.15音量减小

voidCMediaPlayerDlg:

:

OnSub()

{

intVolume=m_setting.GetVolume();

m_setting.SetVolume(Volume=Volume-10);

m_VOLUME.SetPos(m_setting.GetVolume());

}

4.16静音

voidCMediaPlayerDlg:

:

OnSilence()

{

longtemp;

Temp=m_ActiveMovie.GetVolume();

if(temp>-4000)

{

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(-4000);

m_ActiveMovie.Run();

}

else

{

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(temp+4000);

m_ActiveMovie.Run();

}

}

4.17快进退模块

//快进

voidCMediaPlayerDlg:

:

OnForward()

{

doublet=m_control.GetCurrentPosition();

m_control.SetCurrentPosition(t=t+10);

}

//快退

voidCMediaPlayerDlg:

:

OnReverse()

{

doublet=m_control.GetCurrentPosition();

m_control.SetCurrentPosition(t=t-10);

}

4.18上一曲、下一曲

//上一曲

voidCMediaPlayerDlg:

:

OnLast()

{

m_listCtrl.SetFocus();

POSITIONpos;CStringstrName;

UINTflag1=LVIS_SELECTED|LVIS_FOCUSED;

pos=m_listCtrl.GetFirstSelectedItemPosition();

IndexInFieldList=m_listCtrl.GetNextSelectedItem(pos);

if(IndexInFieldList==-1)

{

AfxMessageBox("列表内没有被选中项!

");

return;

}

if(IndexInFieldList==0)

{

AfxMessageBox("已经到了列表头部!

");

m_listCtrl.SetItemState(IndexInFieldList,flag1,flag1);

return;

}

m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);

m_listCtrl.SetItemState(IndexInFieldList-1,flag1,flag1);

strName=m_listCtrl.GetItemText(IndexInFieldList-1,3);KillTimer(0);

m_control.stop();

m_player.SetUrl(strName);

m_control.SetCurrentPosition(0.01);

m_control.play();

SetTimer(0,20,NULL);

}

//下一曲

voidCMediaPlayerDlg:

:

OnNext()

{

m_listCtrl.SetFocus();

POSITIONpos;CStringstrName;

UINTflag1=LVIS_SELECTED|LVIS_FOCUSED;

pos=m_listCtrl.GetFirstSelectedItemPosition();

IndexInFieldList=m_listCtrl.GetNextSelectedItem(pos);

if(IndexInFieldList==-1)

{

AfxMessageBox("列表内没有被选中项!

");

return;

}

if(IndexInFieldList==m_listCtrl.GetItemCount()-1)

{

AfxMessageBox("已经到了列表末尾!

");

m_listCtrl.SetItemState(IndexInFieldList,flag1,flag1);

return;

}

m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);

m_listCtrl.SetItemState(IndexInFieldList+1,flag1,flag1);

strName=m_listCtrl.GetItemText(IndexInFieldList+1,3);KillTimer(0);

m_control.stop();

m_player.SetUrl(strName);

m_control.SetCurrentPosition(0.01);

m_control.play();

SetTimer(0,20,NULL);

}

 

5.运行界面

5.1版权信息

点击“关于”按钮,就可以查看版权信息

5.2初始界面

 

5.3添加文件

点击“打开文件”按钮可以添加自己喜欢的歌曲或视频。

5.4播放文件

打开文件即可播放自己喜欢的音乐或视频。

5.5退出

点击退出即可。

6.总结

这个多媒体播放器在经过好几次的机房上机,以及自己在宿舍里一次次的设计页面、编写代码等终于完成了。

在设计过程中出现过好些问题,有粗心打错过代码,也有属性没设置好等等原因,在自己的检查下以及老师和同学的帮助下也得到了解决。

这次课程设计,确实锻炼了我的设计操作等能力,加深了我对VC++这门课程的理解,也掌握了用MFC创建基于对话框的简单应用程序。

真的学到了很多,谢谢老师的教导!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2