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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《多媒体技术》课程论文题目:基于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_castCWMPMedia(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:AddextravalidationhereCDialog::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_contr

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功