




免费预览已结束,剩余35页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计课程设计 设计报告设计报告 题 目 多媒体播放器程序的设计与实现 学 号 20085926 姓 名 张一波 学 院 信息科学与技术学院 专业班级 计算机软件 08 03 班 指导教师 黄文培 设计时间 2010 年 11 月 目目 录录 指导老师评语 评定成绩 签名 日期 2 1 概述 3 1 1 课程设计目的 3 1 2 设计任务与要求 3 1 3 开发环境 3 2 系统设计的基本概念与原理 4 2 1 基本概念与知识 4 2 2 系统设计实现的基本原理与过程 7 3 系统的总体设计与分析 9 3 1 系统功能设计 9 3 2 系统架构设计 10 3 3 子系统与模块设计 11 4 系统详细设计与实现 13 5 系统调试与运行 16 5 1 系统安装与部署 16 5 2 系统运行与测试 17 6 课程设计总结 28 3 1 概述 1 1 课程设计目的 利用此次课程设计 进一步熟悉 C 语言 熟悉 Visual Studio 相关的开 发环境 结合 Windows Media Player ActiveX 控件的使用 进一步学习体会 MFC 使用与制作逐渐培养学生的编程能力 用计算机解决实际问题的能力 1 2 设计任务与要求 目的 利用 VC 开发一个支持 mp3 wma wmv avi mpg 等不同音频 视 频格式的多媒体播放器 通过课程设计掌握多媒体编程的基本原理 任务 1 编程实现一个可支持多种音视频格式的多媒体播放器 其基本功能包 括媒体播放 音量调节 播放进度选择 暂停 停止以及歌曲信息的 查询与添加等 2 给出程序的总体设计和详细设计 要求程序总体架构图 详细设计的 流程图 函数 变量说明等 3 给出程序运行 测试的详细结果 1 3 开发环境 开发工具 Microsoft Visual C 6 0 开发语言 C 运行支持环境 硬件环境 CPU 1 0G以上 内存256M以上 硬盘20G以上 操作系统 Microsoft Windows 2000 XP VISTA Windows 7 4 2 系统设计的基本概念与原理 2 1 基本概念与知识 2 1 1 MFC MFC Microsoft Foundation Classes 是一个微软公司提供的类库 class libraries 以 C 类的形式封装了 Windows 的 API 并且包含一个应用程序 框架 以减少应用程序开发人员的工作量 其中包含的类包含大量 Windows 句 柄封装类和很多 Windows 的内建控件和组件的封装类 2 1 2 MFC编程特点 微软基础类 Microsoft Foundation Classes 是微软提供的 用于在C 环境 下编写应用程序的一个框架和引擎 VC 是WinDOS下开发人员使用的专业C SDK SDK Standard SoftWare Develop Kit 专业软件开发平台 MFC就是挂 在它之上的一个辅助软件开发包 MFC是Win API与C 的结合 API 即微软提供的Windows下应用程序的编程语言 接口 是一种软件编程的规范 但不是一种程序开发语言本身 可以允许用户 使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发 使这些 被开发出来的应用程序能在Windows下运行 因此用它们开发出来的应用程序都 能工作在Windows的消息机制和绘图里 遵守Windows作为一个操作系统的内部 实现 MFC是微软对API函数的专用C 封装 这种结合一方面让用户使用微软 的专业C SDK来进行Windows下应用程序的开发变得容易 因为MFC是对API的 封装 微软做了大量的工作 隐藏了好多程序开发人员在Windows下用C rmi mid rmi MPEG File mpeg mpeg All File 打开菜单项的文件类型选择 CFileDialog dlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter 14 if dlg DoModal IDOK CString PathName dlg GetPathName PathName MakeUpper m ActiveMovie SetFileName PathName 4 1 2 关闭媒体文件 代码 void CMediaPlayerDlg OnCancel 调用控制函数退出 CDialog OnCancel 4 1 3 播放打开的文件 代码 void CMediaPlayerDlg OnPlay 调用控制函数播放打开的文件 m ActiveMovie Run SetTimer 0 20 NULL double CurrentPos m ActiveMovie GetCurrentPosition if CurrentPos 0 4 1 4 停止打开的文件 代码 void CMediaPlayerDlg OnStop 调用控制函数停止打开的文件 m ActiveMovie Stop KillTimer 0 4 1 5 暂停正在播放的文件 15 代码 void CMediaPlayerDlg OnPause 调用控制函数暂停正在播放的文件 m ActiveMovie Pause void CMediaPlayerDlg OnHScroll UINT nSBCode UINT nPos CScrollBar pScrollBar CSliderCtrl pSlider CSliderCtrl pScrollBar if m Slider pSlider return long Volume long m Slider GetPos long PreVolume m ActiveMovie GetVolume m ActiveMovie Pause m ActiveMovie SetVolume PreVolume Volume m ActiveMovie Run CDialog OnHScroll nSBCode nPos pScrollBar 4 1 6 降低音量 代码 void CMediaPlayerDlg OnLower 调用设置音量函数降低音量 long Volume m ActiveMovie GetVolume m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 m ActiveMovie Run 4 1 7 增大音量 代码 void CMediaPlayerDlg OnUpper 调用设置音量函数降低音量 16 long Volume m ActiveMovie GetVolume m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 m ActiveMovie Run 4 1 8 全屏播放 代码 void CMediaPlayerDlg OnFulscreeen 调用控制函数使播放全屏 m ActiveMovie Pause m ActiveMovie SetFullScreenMode true m ActiveMovie SetMovieWindowSize SW SHOWMAXIMIZED m ActiveMovie Run 4 2 5 系统调试与运行 5 1 系统安装与部署 5 1 1 制作压缩文件 17 5 1 1 右键点击 VC 形成的文件夹 制作成一个 RAR 后缀的压缩文件 5 1 2 这样一个小小的压缩文件包就形成了 5 2 系统运行与测试 5 2 1 解压压缩文件 18 5 2 1 解压文件到指定的文件夹 5 2 2 将文件解压到指定的文件夹 5 2 2 打开文件夹 19 5 2 3 5 2 3 运行播放器 5 2 4 20 5 2 4 调试 打开 按钮 点击打开按钮 5 2 5 文件类型默认的是 MP3 格式 当然在这里我们可以选择显示所有文件 以 便播放其他格式的视频 音乐 21 5 2 6 5 2 7 打开其中一个文件 22 5 2 8 5 2 5 测试播放按钮 23 5 2 9 测试结果播放功能正常 5 2 6 测试暂停按钮 24 5 2 10 测试结果显示暂停功能正常 5 2 7 测试停止功能 25 5 2 11 图中显示的图像由正在播放中的直接变回初始的图像 显示了停止功能的 正常使用 5 2 8 最小化按钮的测试 26 5 2 12 点击最小化后 视频图像和播放进度条小诗 出现一个蓝色小方块形状的 按钮 双击它 恢复原来的状态 5 2 9 退出程序的测试 由于无法用图像来显示这个功能 只能跳过 5 2 10 声音增大 经过测试发现此功能正常工作 5 2 11 声音减小 经过测试发现此功能正常工作 5 2 12 全屏播放 27 5 2 13 图片显示的全屏播放的正常使用 28 6 课程设计总结 本次课程设计的任务是利用VC 开发一个支持mp3 wma wmv avi mpg等 不同音频 视频格式的多媒体播放器 以便通过课程设计掌握多媒体编程的基 本原理 通过本次课程设计自己进一步熟悉了Visual Studio 2008 开发环境工 具 巩固复习了MFC的应用程序编程 对Windows Media Player 的开发实现有 了深刻的了解 了解了相关中间件技术 当然更熟悉了C 语言 体会到了面向 对象的开发过程 多媒体播放器的设计是基于MFC框架 当然也是基于Win32 开发的应用程序 在 开发过程中为了完善各多媒体播放器功能 设计用户之间友好的接口 使用了 MFC通用控件 按钮 静态文本框 编辑框 组合框 列表框 在制作过程中对 这些控件的属性 事件及方法都有了较为熟练的掌握 另外基于MFC开发程序必 定要对整个MFC的框架有所了解 在设计时也进一步熟悉了MFC相关调用的实现 在实现媒体播放这一重要功能时 采用了调用Windows Media Player 控件来实 现基本播放功能 通过本次的课程设计 对C MFC 面向对象的开发过程 有了更深的认识与掌握 学习到了Media Player 控件调用 充实了自身 学到 很多有用的工具 方法 29 附部分程序代码 include stdafx h include MediaPlayer h include MediaPlayerDlg h include activemovie3 h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE CMediaPlayerDlg CMediaPlayerDlg CWnd pParent NULL CDialog CMediaPlayerDlg IDD pParent m hIcon AfxGetApp LoadIcon IDR MAINFRAME void CMediaPlayerDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX DDX Control pDX IDC FULSCREEEN m FullScreen DDX Control pDX IDC REPEAT m Repeat DDX Control pDX IDC UPPER m Upper DDX Control pDX IDC LOWER m Lower DDX Control pDX IDC CLOSE m Close DDX Control pDX IDCANCEL m Exit DDX Control pDX IDC STOP m Stop DDX Control pDX IDC PLAY m Play DDX Control pDX IDC PAUSE m Pause DDX Control pDX IDC OPEN m Open DDX Control pDX IDC ACTIVEMOVIECONTROL1 m ActiveMovie BEGIN MESSAGE MAP CMediaPlayerDlg CDialog ON WM SYSCOMMAND ON WM PAINT ON WM QUERYDRAGICON ON BN CLICKED IDC CLOSE OnClose ON BN CLICKED IDC OPEN OnOpen ON BN CLICKED IDC PLAY OnPlay ON BN CLICKED IDC STOP OnStop 30 ON BN CLICKED IDC PAUSE OnPause ON BN CLICKED IDC LOWER OnLower ON BN CLICKED IDC UPPER OnUpper ON BN CLICKED IDC REPEAT OnRepeat ON BN CLICKED IDC FULSCREEEN OnFulscreeen ON WM TIMER ON BN CLICKED IDC STATIC2 OnStatic2 END MESSAGE MAP 下面一段代码是对各个按钮的功能实现下面一段代码是对各个按钮的功能实现 BOOL CMediaPlayerDlg OnInitDialog CDialog OnInitDialog isRepeat FALSE ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu SetIcon m hIcon TRUE 设置大按钮 SetIcon m hIcon FALSE 设置小按钮 TODO Add extra initialization here return TRUE 返回真 除非你得到了这个按钮的控制 void CMediaPlayerDlg OnSysCommand UINT nID LPARAM lParam 31 if nID dlgAbout DoModal else CDialog OnSysCommand nID lParam 最小化窗口按钮的功能实现最小化窗口按钮的功能实现 void CMediaPlayerDlg OnClose TODO Add your control notification handler code here m ActiveMovie CloseWindow 打开文件按钮功能的实现打开文件按钮功能的实现 void CMediaPlayerDlg OnOpen TODO Add your control notification handler code here char szFileFilter Mp3 File mp3 mp3 Wma File wma wma Video File dat dat Wave File wav wav AVI File avi avi Movie File mov mov Media File mmm mmm Mid File mid rmi mid rmi MPEG File mpeg mpeg All File 各类文件类型 CFileDialog dlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter if dlg DoModal IDOK CString PathName dlg GetPathName PathName MakeUpper m ActiveMovie SetFileName PathName 32 播放功能的实现播放功能的实现 void CMediaPlayerDlg OnPlay TODO Add your control notification handler code here m ActiveMovie Run SetTimer 0 20 NULL double CurrentPos m ActiveMovie GetCurrentPosition if CurrentPos 0 停止功能的实现停止功能的实现 void CMediaPlayerDlg OnStop TODO Add your control notification handler code here m ActiveMovie Stop KillTimer 0 暂停功能的实现暂停功能的实现 void CMediaPlayerDlg OnPause TODO Add your control notification handler code here m ActiveMovie Pause void CMediaPlayerDlg OnHScroll UINT nSBCode UINT nPos CScrollBar pScrollBar TODO Add your message handler code here and or call default CSliderCtrl pSlider CSliderCtrl pScrollBar if m Slider pSlider return long Volume long m Slider GetPos long PreVolume m ActiveMovie GetVolume m ActiveMovie Pause 33 m ActiveMovie SetVolume PreVolume Volume m ActiveMovie Run CDialog OnHScroll nSBCode nPos pScrollBar 降低音量的实现降低音量的实现 void CMediaPlayerDlg OnLower TODO Add your control notification handler code here long Volume m ActiveMovie GetVolume m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 m ActiveMovie Run 增大音量的实现增大音量的实现 void CMediaPlayerDlg OnUpper TODO Add your control notification handler code here long Volume m ActiveMovie GetVolume m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 m ActiveMovie Run 重置 void CMediaPlayerDlg OnRepeat TODO Add your control notification handler code here if isRepeat isRepeat TRUE SetDlgItemText IDC STATIC2 Status Repeat else isRepeat FALSE 34 SetDlgItemText IDC STATIC2 Status Normal 全屏功能的实现全屏功能的实现 void CMediaPlayerDlg OnFulscreeen TODO Add your control notification handler code here m ActiveMovie Pause m ActiveMovie SetFullScreenMode true m ActiveMovie SetMovieWindowSize SW SHOWMAXIMIZED m ActiveMovie Run void CMediaPlayerDlg OnTimer UINT nIDEvent TODO Add your message handler code here and or call default double CurrentPos m ActiveMovie GetCurrentPosition if CurrentPos 0 CDialog OnTimer nIDEvent 退出程序的功能实现退出程序的功能实现 void CMediaPlayerDlg OnCancel TODO Add extra cleanup here CDialog OnCancel void CMediaPlayerDlg OnStatic2 TODO Add your control notification handler code here 35 以下一段代码是对图形界面的包装渲染 以下一段代码是对图形界面的包装渲染 include stdafx h include math h include RoundButton h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif COLORREF GetColour double dAngle COLORREF crBright COLORREF crDark define Rad2Deg 180 0 3 1415 define LIGHT SOURCE ANGLE 2 356 ASSERT dAngle 3 1416 double dAngleDifference LIGHT SOURCE ANGLE dAngle if dAngleDifference 3 1415 dAngleDifference 6 293 dAngleDifference double Weight 0 5 cos dAngleDifference 1 0 BYTE Red BYTE Weight GetRValue crBright 1 0 Weight GetRValue crDark BYTE Green BYTE Weight GetGValue crBright 1 0 Weight GetGValue crDark BYTE Blue BYTE Weight GetBValue crBright 1 0 Weight GetBValue crDark return RGB Red Green Blue void DrawCircle CDC pDC CPoint p LONG lRadius COLORREF crColour BOOL bDashed const int nDashLength 1 LONG lError lXoffset lYoffset int nDash 0 36 BOOL bDashOn TRUE 检查是否有效的坐标 ASSERT p x lRadius LONG MAX 设置初始值 lXoffset lRadius lYoffset 0 lError lRadius do if bDashOn pDC SetPixelV p x lXoffset p y lYoffset crColour pDC SetPixelV p x lXoffset p y lYoffset crColour pDC SetPixelV p x lYoffset p y lXoffset crColour pDC SetPixelV p x lYoffset p y lXoffset crColour pDC SetPixelV p x lYoffset p y lXoffset crColour pDC SetPixelV p x lYoffset p y lXoffset crColour pDC SetPixelV p x lXoffset p y lYoffset crColour pDC SetPixelV p x lXoffset p y lYoffset crColour 推进误差项和常数 X 轴 lError lYoffset 检查是否已溢出误差项 if lError lYoffset 0 lError lXoffset 2 if bDashed bDashOn bDashOn while lYoffset lXoffset 继续 直到中间点 void DrawCircle CDC pDC CPoint p LONG lRadius COLORREF crBright COLORREF crDark LONG lError lXoffset lYoffset 检查是否有效的坐标 37 ASSERT p x lRadius LONG MAX 设置初始值 lXoffset lRadius lYoffset 0 lError lRadius do const double Pi 3 141592654 Pi on 2 Pi 0 5 Three Pi on 2 Pi 1 5 COLORREF crColour double dAngle atan2 lYoffset lXoffset Draw the current pixel reflected across all eight arcs crColour GetColour dAngle crBright crDark pDC SetPixelV p x lXoffset p y lYoffset crColour crColour GetColour Pi on 2 dAngle crBright crDark pDC SetPixelV p x lYoffset p y lXoffset crColour crColour GetColour Pi on 2 dAngle crBright crDark pDC SetPixelV p x lYoffset p y lXoffset crColour crColour GetColour Pi dAngle crBright crDark pDC SetPixelV p x lXoffset p y lYoffset crColour crColour GetColour Pi dAngle crBright crDark pDC SetPixelV p x lXoffset p y lYoffset crColour crColour GetColour Pi on 2 dAngle crBright crDark pDC SetPixelV p x lYoffset p y lXoffset crColour crColour GetColour Pi on 2 dAngle crBright crDark pDC SetPixelV p x lYoffset p y lXoffset crColour crColour GetColour dAngle crBright crDark pDC SetPixelV p x lXoffset p y lYoffset crColour 推进误差项和常数 X 轴 lError lYoffset Check to see if error term has overflowed 38 if lError lYoffset 0 lError lXoffset 2 while lYoffset ScreenTo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论