C++课程设计-播放器_第1页
C++课程设计-播放器_第2页
C++课程设计-播放器_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术学院C+面向对象课程设计题目多媒体播放器制作学院计算机科学与技术班级软件工程1001班指导教师XX老师姓名2011年6月24日摘要当前多媒体技术飞速发展,日新月异,呈现在人们面前的是更加多姿多彩的 世界。多媒体技术给人们提供了强大的视听感受,主要以声音、视频、图片等为 主。近年来音乐和电影的发展和普及尤为突出,现已成为多媒体的“代言人”随之而来的是越来越多的应用软件供人们选择来播放特定的音乐和视频,像音乐播放器家最为熟悉的“酷狗”、“千千静听”等,视频播放器家最为熟悉的莫 过于“暴风影音”和“快播”了,他们不仅功能强大,可以支持多种格式的视频 和音乐,而且容易操作, 易为广大影

2、音爱好者接受和使用。 他们的操作界面非常 友好,而且大多可根据用户自己的爱好进行设置,深受消费者的喜爱。于是,我们小组选择了制作一个简单的音乐视频播放器, 由于目前我们的能 力还十分有限,只能做出简单的小程序,但我们相信,这可以激发我们的兴趣, 为以后的学习和进步打下基础。我们的音乐视频播放器可以播放 Mp3,Wma,Midi 等格式的音乐文件和Rmvb,Rm,Avi等格式的视频文件。主要有“打开文件”,“播放”,“暂停”,“继续”,“停止”,“全屏”等功能, 在播放的时候可以显示当前播放的曲目,并且可以显示当前的状态。关键词:多媒体;视听;应用软件。主要变量及对象int NumOfMedia

3、/ 已添加到列表的文件数CString file255/ 用于保存列表中文件的路径NOTIFYICONDATA m_NotifyData/ 结构体,传递托盘区域消息的信息的控制对象CMenu m_TrayMenuBOOL m_flagBOOL m_FlagBOOL m_selectedCListCtrl m_listCWMPPlayer4 m_player /windows media player/ 定义托盘对象/ 判断全屏标志变量/ 判断复选的标志变量/ 列表控件控制对象目录第一章前言 41.1 简介说明 41.2 设计目的 41.3 运行规则 41.4 项目任务书 5第2章系统功能分析

4、72.1 系统总体功能分析 72.2 系统部分功能实现具体分析 82.2.1 打开多媒体文件功能分析 82.2.2 添加文件到播放列表,双双击列表项播放 . 92.3 程序核心代码 102.3.1 播放功能核心代码 102.3.2 暂停、停止功能核心代码 102.3.3 全屏功能核心代码 112.3.4 播放列表相关操作代码 122.3.5 设置对话框伸缩代码 . 132.3.5 系统托盘相关代码. 14第3章系统测试 163.1 程序主界面 163.2 打开添加文件 163.3 播放多媒体文件 183.4 全屏界面显示 193.5 隐藏和显示功能 203.6 添加文件到列表框功能 20第4章

5、结语 21参考文献 22第一章 前 言1.1 简介说明这是一款小巧实用的多媒体播放器,容易操作,界面简洁,画面清晰,基本 功能齐全。针对当前多媒体播放软件商业化趋势的加强,制作这样一个播放器, 用于供个人娱乐使用。 信息化时代, 多媒体技术飞速发展, 呈现在人们面前的是 更加多姿多彩的世界。此外,本播放器采用 windows media player 制作而成, 运用系统相关控件, 支持多种格式的多媒体文件播放, 给人们提供了强大的视听 感官冲击。1.2 设计目的我们将主要通过C+语言和MFC技术,运用面向对象的程序设计方法,开发 此款多媒体播放器。争取做到使程序短小精悍,简洁明了;操作界面优

6、美友好, 容易操作;功能丰富,趣味性强。现在将我们对项目期望实现的目标一一介绍:1、可以在任何时候启用该应用程序。2、可以播放多种格式的音频和视频。3、可以实现多种播放状态的切换。4、可以实现快进或快退。5、可以显示播放时间和曲目总长度。6、操作界面友好。7、操作方便,容易上手。1.3 运行规则(1) 打开文件在运行本播放器的第一步就是首先要在磁盘中选取为其支持的文件, 包括常 见的音乐和视频格式。点击“打开文件”后,会弹出一个对话框,要求用户在相应的目录下选择文件, 如选择的文件类型为其所支持, 播放器会自动播放音乐或 视频。(2) 操作规则添加在选中文件后程序将会把该文件保存到播放列表,

7、双击列表项可以 播放文件;播放在打开文件的时候播放器会自动播放选取的音频或视频, 此时界面 上会显示正在播放以及播放的文件名;暂停点击播放器上方的“暂停”按钮,即可暂停正在播放的曲目,此时 界面上会显示播放的文件已暂停;继续在暂停之后,原来的暂停按钮会变成“继续” ,单击会继续播放已 暂停的曲目。此时“继续”按钮将会重新变成“暂停” ;停止点击此按钮, 会中止正在播放的曲目, 若要继续, 则只能重新开始 已选择的曲目;全屏一一点击会全屏播放音频或视频, 退出时需要双击界面或按“ Esc”键;隐藏和显示会隐藏除“显示”外的其他按钮,此时“隐藏”按钮会自动 变成“显示”,若要显示,正好相反操作;退

8、出此时指退出该播放器, 用户在选择此按钮时, 会弹出一个对话框要 求用户确认退出或放弃退出继续播放。注意:本程序未定义快捷键, 使用快捷键可能会使程序被强 行关闭,请勿使用快捷键1.4 项目任务书(1) 班级:软件工程 1001 班(2) 组员:涌澜 (组长) 、唐一茗、周贤(3) 项目名称:多媒体播放器(4) 项目分工:涌澜:前景展望,编写部分程序。管理整个小组的活动,指导编程,编写 部分程序及程序调试。唐一茗:资料的收集,资料分析,项目把关、软件的最后测试及编写“托盘 菜单(打开文件)”部分程序。周 贤:资料的收集, 资料分析,文档的设计和编写, 编写“菜单(播放 暂停)”部分程序及程(5

9、) 项目进度:15 周:前期准备,各类资料的收集整理16 周:实现基本功能并完善。17 周:实现程序附加功能并运行。18 周:最后测试,最后优化。第2章系统功能分析2.1 系统总体功能分析下面是我们的播放器的设计和运行的流程图:图2-1-1总体功能流程图2.2 系统部分功能实现具体分析221打开多媒体文件功能分析实现函数;CCZTMediaPlayerDlg:OnOpenfile()为菜单栏的“文件”弹出菜单下“打开文件”菜单按钮添加对话框类的消息响应函数On Ope nfile。在该函数下定义一个字符型数组变量 szFileFilter 用 于保存可打开文件的扩展名。然后创建一个通用对话框,

10、用于打开文件。如果用 户选中文件并点击确定按钮,程序将得到该文件的路径,然后调用windows media player控件的SetUrl方法,此时将播放该文件。图2.2.1.1 On Ope nfile函数的实现222添加文件到播放列表,双双击列表项播放实现函数;OnAddmedia()及 OnDblcIkPlayList在对话框中添加一个列表控件。为菜单栏的“播放列表”弹出菜单下“添加” 菜单按钮添加对话框类的消息响应函数On Addmedia创建通用对话框,在用户选择文件并点击确定时,将程序得到该文件的文件名及路径,分别保存在 fileName和fileNumOfMedia+1变量中,N

11、umOfMedia变量为整型,其作用是将 得到的列表中现有的列表项数保存起来。接着在类向导中创建列表项的左键双击 消息响应函数OnDblclkPlayList ,此时利用GetSelectionMark方法得到所点击 的是第几行,然后从file数组中得到该项的地址,用 SetUrl方法播放。图 2.222 OnDblclkPlayList函数的实现2.3 程序核心代码2.3.1 播放功能核心代码void CCZTMediaPlayerDlg:OnOpenfile() / 打开文件/ TODO: Add your command handler code herechar szFileFilte

12、r="All File(*.*)|*.*|""RM File(*.rm)|*.rm|""AVI File(*.avi)|*.avi|""Mp3 File(*.mp3)|*.mp3|""MPEG File(*.mpeg)|*.mpeg|""Media File(*.asf)|*.asf|""Video File(*.dat)|*.dat|""MPGA File(*.mpga)|*.mpga|""Wave File(*.wav)|

13、*.wav|""Movie File(*.mov)|*.mov|""Mid File(*.mid;*,rmi)|*.mid;*.rmi|""Wma File(*.wma)|*.wma|"CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFileFilter, NULL);if(dlg.DoModal()=IDOK)CString filePathName=dlg.GetPathName(); m_player.SetUrl(filePa

14、thName);/ 播放2.3.2 暂停、停止功能核心代码void CCZTMediaPlayerDlg:OnPlay()/ TODO: Add your command handler code here m_player.GetControls().play();/ 播放文件void CCZTMediaPlayerDlg:OnPause()/ TODO: Add your command handler code here m_player.GetControls().pause();/ 暂停文件播放 void CCZTMediaPlayerDlg:OnStop()/ TODO: Add

15、your command handler code here m_player.GetControls().stop();/ 停止文件播放 2.3.3 全屏功能核心代码void CCZTMediaPlayerDlg:OnFullscreem() / 全屏/ TODO: Add your command handler code here long Playstate=m_player.GetPlayState(); if(!Playstate)MessageBox("请先加载视频 川",NULL,MB_OK);elseif(m_flag)/GetWindowRect(&am

16、p;rc_OLdWnd); m_player.SetFullScreen(TRUE); m_flag = true;SetFocus();else m_player.SetFullScreen(FALSE); m_flag = false;SetFocus();void CCZTMediaPlayerDlg:OnAbout()/ TODO: Add your command handler code here CAboutDlg dlg; dlg.DoModal();2.3.4 播放列表相关操作代码void CCZTMediaPlayerDlg:OnAddmedia()/ TODO: Add

17、your command handler code herechar szFileFilter="All File(*.*)|*.*|""RM File(*.rm)|*.rm|""AVI File(*.avi)|*.avi|""Mp3 File(*.mp3)|*.mp3|""MPEG File(*.mpeg)|*.mpeg|""Media File(*.asf)|*.asf|""Video File(*.dat)|*.dat|""MPGA Fil

18、e(*.mpga)|*.mpga|""Wave File(*.wav)|*.wav|""Movie File(*.mov)|*.mov|""Mid File(*.mid;*,rmi)|*.mid;*.rmi|""Wma File(*.wma)|*.wma|"CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFileFilter, NULL);if(dlg.DoModal()=IDOK)CString fileName

19、=dlg.GetFileTitle(); m_list.InsertItem(1,fileName,0); NumOfMedia=m_list.GetItemCount(); fileNumOfMedia-1=dlg.GetPathName();void CCZTMediaPlayerDlg:OnDblclkPlayList(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code hereCString str;int mark = m_list.GetSelectionMark();

20、m_player.SetUrl(filemark);*pResult = 0;void CCZTMediaPlayerDlg:OnDelall()/ TODO: Add your command handler code here m_list.DeleteAllItems();2.3.5 设置对话框伸缩代码void CCZTMediaPlayerDlg:OnButton1() / 对话伸缩框/ TODO: Add your control notification handler code hereCString st;if (GetDlgItemText(IDC_BUTTON1,st),s

21、t="<")SetDlgItemText(IDC_BUTTON1,">");else SetDlgItemText(IDC_BUTTON1,"<");static CRect rectLarge;static CRect rectSmall;if (rectLarge.IsRectNull()GetWindowRect(&rectLarge);CRect picRect;GetDlgItem(IDC_STATIC)->GetWindowRect(&picRect);rectSmall.left=

22、rectLarge.left; rectSmall.top=rectLarge.top; rectSmall.right=picRect.right;rectSmall.bottom=rectLarge.bottom;if (st="<")SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),SWP_NOMOVE | SWP_NOZORDER);elseSetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE | SWP_N

23、OZORDER);2.3.5 系统托盘相关代码void CCZTMediaPlayerDlg:OnTrayMessage(WPARAM wParam, LPARAM lParam) if (lParam = WM_LBUTTONDOWN)/ShowWi ndow(SW_RESTORE左左击显示窗口else if (IParam = WM_RBUTTONDOWN ”/右击弹出菜单CPoint curPT;:GetCursorPos(&curPT);/ 获取点击的位置CMe nu* pSumMe nu = m_TrayMe nu.GetSubMe nu(O);/指向菜单 pSumMenu-

24、>TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, curPT.x,curPT.y, AfxGetApp()->m_pMainWnd, TPM_LEFTALIGN);/ 再点 击的位置弹出菜单void CCZTMediaPlayerDlg:OnCancel()Shell_NotifyIcon(NIM_DELETE, &m_NotifyData);/ 退出时注销托盘 CDialog:OnCancel();BOOL CCZTMediaPlayerDlg:OnInitDialog()/ TODO: Add extra initializa

25、tion herem_TrayMe nu.LoadMe nu(IDR_TRAYMENU)加载一个菜单资源m_NotifyData.cbSize = sizeof(NOTIFYICONDATA);注册m_NotifyData.hIcon = AfxGetApp()->LoadIcon(IDI_MEDIAPLAYER);/ 一个系统托盘图标m_NotifyData.hWnd = m_hWnd;char *szTrayText = "CZTMediaPlayer"strncpy(m_NotifyData.szTip, szTrayText, strlen(szTrayTex

26、t)+1); / 托盘提示m_NotifyData.uCallbackMessage = WM_TRARMESSAGE; m_NotifyData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;第3章系统测试3.1程序主界面当用户运行程序运行时将会运行如下界面:图程序运行主界面文杵做显示轄助图程序帮助界面3.2打开添加文件当用户选择打开添加多媒体文件时显示如下界面:图 3.2.1 打开添加多媒体文件图图 3.2.2 打开添加多媒体文件图3.3播放多媒体文件当用户选择多媒体文件且播放选中文件时显示如下界面:图打开音乐文件并播放图示打开视频文件并播放图图333多媒体文件播放时使用暂停功能图3.4全屏界面显示当用户选择显示全屏时,显示如下界面:-TT= * *' ' 3 1图全屏界面图3.5隐藏和显示功能当用户选择将其窗口最小化后将会托盘隐藏在右下角位置,如下界面:图隐藏和显示功能3.6添加文件到列表框功能当用户选择添加文件后文件将显示在右边的列表框,如下界面:图添加文件到列表框功能图第 4 章 结语经过三个星期的时间,我们小组已经完成了 C+面向对象的课程设计。这次 课程设计是与同学共同讨论并利用这学期学到了C+以及MFC知识完成的。本次课程设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论