




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC 课程设计 1 福建工程学院福建工程学院 VC VC 课程设计课程设计 课课 题 题 音频播放器音频播放器 班班 级 级 通信通信 1202 学学 号 号 姓姓 名 名 陈李萍陈李萍 同组组员同组组员 林志滨林志滨 林剑花林剑花 陈李萍陈李萍 熊建熊建 朱炜明朱炜明 周士炜周士炜 马率杰马率杰 指导老师 指导老师 黄旭红黄旭红 林挺钊林挺钊 陈健陈健 日日 期 期 2013 11 25 11 29 VC 课程设计 2 目 录 一 设计目的与要求 3 二 准备工作 3 三 系统分析及实现步骤 3 3 1 系统实现的方法 3 3 2 程序设计的总框图 4 3 3 项目的具体设计方案 设计原理与流程图等 4 3 4 扩展部分 根据实际情况而定 如果没有扩展部分 则不写 9 3 5 类声明与核心算法程序代码 12 四 测试与结论 20 五 课程设计总结 24 六 参考文献 25 七 附录 25 VC 课程设计 3 1 设计的目的与要求设计的目的与要求 多媒体技术的发展使得计算机应用范围更加广泛 目前各类多媒体播放软件层出 不穷 试开发一个简易的音频播放器 求如下 1 菜单式的人机界面 2 具有打开 播放 停止 暂停 定时播放的功能 3 可控制音量 左右声道 静音 4 具有显示音频波形的特效 二 准备工作二 准备工作 在开始做课程设计项目前应 1 应回顾或复习 C 专业课所学习的内容 及课外编程实例 2 需要一台 PC 机 3 安装 Visual C 6 0 集成开发环境软件 4 项目主要用到的函数 OnAdd 添加功能 StoreList ReadList 播放列表功能 On Clear 清空播放列表功能 OnPlayOrPause 播放 暂停功能 SetVolumee Oninvolume Ondevolume 音量功能 BOOL LineTo MoveToEx 波形显示 GetDlgItem Getwindowtext SetWindowText 定时播放功能 VC 课程设计 4 三 系统分析与项目的实现步骤三 系统分析与项目的实现步骤 3 1 系统实现的方法 MFC 类库将所有图形用户界面的元素如窗口 菜单和按钮等都以类的形式进 行了封装 MFC AppWizard 向导根据继承性利用 MFC 派生出自己的类 并对 Windows 应 用程序进行了分解 利用 MFC 派生类对应用程序重新进行组装 同时还规定了应用程 序中各个 MFC 派生类对象之间的相互联系 实现了标准 Windows 应用程序的功能 这 就是向导生成的所谓 MFC 应用程序框架 每个 MFC 类都包括了一些函数 函数放到类 中 符合 C 编程方法 这些函数 必须通过类定义对象才能使用 在本次设计中 首先 理清课程设计和编写程序的思路 明确程序中所要用到的 函数 并做好了解 然后 再利用 C 类的继承与派生原理来构造所需要的类 编写实 现每项功能的详细代码 利用 MFC 提供的菜单资源来创建菜单 通过类向导建立类 函数 或者消息响应 来实现播放器的各种功能 采用不同的 Windows 提供的坐标系 统和对话框资源 并利用设备环境来绘制和更新图形 使播放器的界面更加美观 实现 较好的人机交互界面 画出系统模块功能图 VC 课程设计 5 3 2 程序设计的总框图 3 3 项目的具体设计方案 设计原理 MP3 播放器主要对常用 Windows 音频格式的文件实现播控制 播放歌曲 暂停播放 停止播放等 实现音量控制 静音 声音放大以及声音减小的功能 此播放器编写的 时候 利用的是 MFC 单文档程序的构成框架 然后再利用 Windows 提供的资源 运用 控件 自己制作对话框和人机交互界面 在制作界面的同时 也制作各个按钮 并完 成各个按钮的消息响应 便完成响应函数 实现了功能 MFC 类库将所有图形用户界面 的元素如窗口 菜单和按钮等都以类的形式进行了封装 MFC AppWizard 向导根据继承 性利用 MFC 派生出自己的类 并对 Windows 应用程序进行了分解 利用 MFC 派生类对 应用程序重新进行组装 同时还规定了应用程序中各个 MFC 派生类对象之间的相互联 系 实现了标准 Windows 应用程序的功能 这就是向导生成的所谓 MFC 应用程序框架 每个 MFC 类都包括了一些函数 函数放到类中 符合 C 编程方法 这些函数 必须通 过类定义对象才能使用 在本次设计中 首先 理清课程设计和编写程序的思路 明 确程序所要用到的函数 并做好了解 然后 再利用 C 类的继承与派生原理来构造所 需要的类 编写实现每项功能的详细代码 利用 MFC 提供的菜单资源来创建菜单 通 过类向导建立类 函数 或者消息响应 来实现播放器的各种功能 添加音乐及视频 开始 播放停止 播放结束 退出 暂停 VC 课程设计 6 1 人机界面设计 播放器界面设计 打开 VC C 6 0 新建一个工程 选择对话框 便生成了一个 窗口 然后打开 ResouceView 点开 Dialog 插入 Dialog 利用控件 绘制各 按钮 如图所示 2 添加 media player 控件 如图所示 VC 课程设计 7 3 各按钮功能的实现 1 处理 添加文件 按钮 单击 添加文件 按钮后 在 Onopen 函数中 首先 对文件类型进行过滤 调用 OpenFiles 函数打开对话框选择一个音频文件 通过 InitPath 函数获取文件路径 通过 InitPath 函数获取文件名后 调用 SaveList 函数在 Static Text 控件上显示你所选择的歌曲文件名 然后再单击播放按钮 便可 以播放歌曲 3 4 扩展部分 1 简单声音录制与播放 vmf 库中提供了一组录制声音的函数 通过 MCIWndCanRecord 函数可以判断系统能否 录制声音 通过函数 MCIWndRecord 可以进行声音录制 如果要播放录制的声音可以 使用 MCIWndPlay 函数 界面设计如下 2 视频播放 运用 Windows media player 控件可以支持播放多种格式的音乐和视频 Windows media player 控件不是系统默认控件 所以需要向该工程中添加该控件 视频播放展 示 VC 课程设计 8 3 5 类声明与核心算法程序代码 1 类与函数层次介绍 图 7 1 a 类与函数层次关系图 Pause 暂态正在播放的音乐 Play 控制音乐播放 Stop 停止播放音乐 Load 加载播放的音乐 RetVolumn 设置音乐播放音量 2 核心代码功能介绍 BOOL CMP3 1Dlg OnInitDialog 系统参数初始化函数 CDialog OnInitDialog SetWindowPos NULL 0 0 480 340 SWP NOMOVE 界面无相对移动 m channel SetRange 0 200 设置左右声道滑块范围 m channel SetPos 100 设置左右声道滑块初始范围 TODO Add extra initialization here for int i 0 i 24 i 定时器设置时 CString temp temp Format 02d i m hour AddString temp CMP3 1Dlg PlayStopSetVolumnPauseLoad VC 课程设计 9 for int p 0 pSetWindowText PathName PathName MakeUpper VC 课程设计 10 void CMP3 1Dlg OnAdd 定时器文件添加函数 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 Flv File flv flv WMV File wmv wmv All File 文件类型过滤 CFileDialog dlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter CFileDialog log TRUE 文件 wav OFN HIDEREADONLY 声音文件 wav wav NULL if dlg DoModal IDOK pathname dlg GetPathName GetDlgItem IDC EDWAVFILE SetWindowText pathname pathname MakeUpper void CMP3 1Dlg OnSet 定时播放歌曲设定函数 TODO Add your control notification handler code here CString name GetDlgItem IDC BTSET GetWindowText name VC 课程设计 11 if name 重新设置 GetDlgItem IDC BTSET SetWindowText 设置 m hour EnableWindow m minu EnableWindow m wavfile EnableWindow else GetDlgItem IDC BTSET SetWindowText 重新设置 m hour EnableWindow FALSE m minu EnableWindow FALSE m wavfile EnableWindow FALSE CString sound hour minu time GetDlgItem IDC CMBHOUR GetWindowText hour GetDlgItem IDC CMBMINU GetWindowText minu GetDlgItem IDC EDWAVFILE GetWindowText sound if sound IsEmpty MessageBox 请选择声音文件 提示 MB OK return if hour IsEmpty MessageBox 请选择声音小时 提示 MB OK return if minu IsEmpty MessageBox 请选择声音分钟 提示 MB OK return time Format s s hour minu strtime time strsound sound SetTimer 1 1000 NULL VC 课程设计 12 系统定时函数 void CMP3 1Dlg OnTimer UINT nIDEvent CTime tt tt CTime GetCurrentTime CString tmp tt Format H M if tmp strtime KillTimer 1 m player SetUrl pathname 左右声道设置函数 void CMP3 1Dlg OnHScroll UINT nSBCode UINT nPos CScrollBar pScrollBar DWORD pos int scrollpos scrollpos m channel GetPos if scrollpos 100 waveOutGetVolume 0 pos pos pos pos MCIWndNew mciwav waveaudio if MCIWndCanRecord mciwav MCIWndRecord mciwav void CMP3 1Dlg Onplay 开始播放文件 TODO Add your control notification handler code here m player SetUrl PathName 4 测试与结论测试与结论 1 经过测试该 MP3 具有打开 播放 停止 暂停 定时播放的功能 可控制音量 左右声道 静音 可以实现显示音频波形的特效 MP3 播放测试如下 VC 课程设计 14 2 经过测试 该软件可以支持多种主流视频格式的波荡 视频播放测试如下 5 课程设计总结课程设计总结 VC 课程设计 15 6 参考文献参考文献 1 明日科技编著 Visual C 开发经验技巧宝典 人民邮电出版社 2007 年版 2 刘锐宁编著 Visual C 开发实战 1200 例第一卷 清华大学出版社 2011 年版 3 明日科技编著 Visual C 程序开发范例宝典 人民邮电出版社 2007 年版 4 董正言 张聪编著 面向对象的程序设计 C 版 清华大学出版社 2014 年版 七 附录七 附录 主要程序的完整代码 人机界面图 备注 字体统一用宋体 小四 附件一 附件一 人机界面图人机界面图 附件二 附件二 程序主要源代码程序主要源代码 VC 课程设计 16 MP3 1Dlg cpp implementation file include stdafx h include MP3 1 h include MP3 1Dlg h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif CAboutDlg dialog used for App About class CAboutDlg public CDialog public CAboutDlg Dialog Data AFX DATA CAboutDlg enum IDD IDD ABOUTBOX AFX DATA ClassWizard generated virtual function overrides AFX VIRTUAL CAboutDlg protected virtual void DoDataExchange CDataExchange pDX DDX DDV support AFX VIRTUAL Implementation protected AFX MSG CAboutDlg VC 课程设计 17 AFX MSG DECLARE MESSAGE MAP CAboutDlg CAboutDlg CDialog CAboutDlg IDD AFX DATA INIT CAboutDlg AFX DATA INIT void CAboutDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX AFX DATA MAP CAboutDlg AFX DATA MAP BEGIN MESSAGE MAP CAboutDlg CDialog AFX MSG MAP CAboutDlg No message handlers AFX MSG MAP END MESSAGE MAP CMP3 1Dlg dialog CMP3 1Dlg CMP3 1Dlg CWnd pParent NULL CDialog CMP3 1Dlg IDD pParent AFX DATA INIT CMP3 1Dlg AFX DATA INIT Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m hIcon AfxGetApp LoadIcon IDR MAINFRAME VC 课程设计 18 void CMP3 1Dlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX AFX DATA MAP CMP3 1Dlg DDX Control pDX IDC CHANNEL m channel DDX Control pDX IDC PLAYLIST m playlist DDX Control pDX IDC EDWAVFILE m wavfile DDX Control pDX IDC CMBMINU m minu DDX Control pDX IDC CMBHOUR m hour DDX Control pDX IDC OCX1 m player AFX DATA MAP BEGIN MESSAGE MAP CMP3 1Dlg CDialog AFX MSG MAP CMP3 1Dlg ON WM SYSCOMMAND ON WM PAINT ON WM QUERYDRAGICON ON BN CLICKED IDC OPEN OnOpen ON EN CHANGE IDC EDWAVFILE OnChangeEdwavfile ON CBN EDITCHANGE IDC CMBHOUR OnEditchangeCmbhour ON CBN EDITCHANGE IDC CMBMINU OnEditchangeCmbminu ON BN CLICKED IDC BTADD OnAdd ON BN CLICKED IDC BTEST OnSet ON WM TIMER ON BN CLICKED IDC BTRECORD OnRecord ON BN CLICKED IDC BTSTOP OnStop ON BN CLICKED IDC BTPLAY OnPlay ON NOTIFY NM OUTOFMEMORY IDC CHANNEL OnOutofmemoryChannel ON WM HSCROLL ON EN CHANGE IDC PLAYLIST OnChangePlaylist ON BN CLICKED IDDELE Onlist ON BN CLICKED IDC REC OnRec ON BN CLICKED IDC LRSOUND OnLrsound ON BN CLICKED IDC SETTIME OnSettime ON BN CLICKED IDC play Onplay VC 课程设计 19 AFX MSG MAP END MESSAGE MAP CMP3 1Dlg message handlers BOOL CMP3 1Dlg OnInitDialog CDialog OnInitDialog Add About menu item to system menu IDM ABOUTBOX must be in the system command range ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu Set the icon for this dialog The framework does this automatically when the application s main window is not a dialog SetIcon m hIcon TRUE Set big icon SetIcon m hIcon FALSE Set small icon SetWindowPos NULL 0 0 480 340 SWP NOMOVE 无相对移动 VC 课程设计 20 m channel SetRange 0 200 m channel SetPos 100 TODO Add extra initialization here for int i 0 i 24 i CString temp temp Format 02d i m hour AddString temp for int p 0 pSetWindowText PathName PathName MakeUpper void CMP3 1Dlg OnChangeEdwavfile TODO If this is a RICHEDIT control the control will not send this notification unless you override the CDialog OnInitDialog function and call CRichEditCtrl SetEventMask with the ENM CHANGE flag ORed into the mask TODO Add your control notification handler code here VC 课程设计 23 void CMP3 1Dlg OnEditchangeCmbhour TODO Add your control notification handler code here void CMP3 1Dlg OnEditchangeCmbminu TODO Add your control notification handler code here void CMP3 1Dlg OnAdd 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 Flv File flv flv WMV File wmv wmv All File 文件类型过滤 CFileDialog dlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter CFileDialog log TRUE 文件 wav OFN HIDEREADONLY 声音文件 wav wav NULL if dlg DoModal IDOK pathname dlg GetPathName GetDlgItem IDC EDWAVFILE SetWindowText pathname VC 课程设计 24 pathname MakeUpper void CMP3 1Dlg OnSet TODO Add your control notification handler code here CString name GetDlgItem IDC BTSET GetWindowText name if name 重新设置 GetDlgItem IDC BTSET SetWindowText 设置 m hour EnableWindow m minu EnableWindow m wavfile EnableWindow else GetDlgItem IDC BTSET SetWindowText 重新设置 m hour EnableWindow FALSE m minu EnableWindow FALSE m wavfile EnableWindow FALSE CString sound hour minu time GetDlgItem IDC CMBHOUR GetWindowText hour GetDlgItem IDC CMBMINU GetWindowText minu GetDlgItem IDC EDWAVFILE GetWindowText sound if sound IsEmpty MessageBox 请选择声音文件 提示 MB OK return if hour IsEmpty VC 课程设计 25 MessageBox 请选择声音小时 提示 MB OK return if minu IsEmpty MessageBox 请选择声音分钟 提示 MB OK return time Format s s hour minu strtime time strsound sound SetTimer 1 1000 NULL 系统定时函数 void CMP3 1Dlg OnTimer UINT nIDEvent CTime tt tt CTime GetCurrentTime CString tmp tt Format H M if tmp strtime KillTimer 1 m player SetUrl pathname void CMP3 1Dlg OnHScroll UINT nSBCode UINT nPos CScrollBar pScrollBar DWORD pos int scrollpos scrollpos m channel GetPos VC 课程设计 26 if scrollpos 100 waveOutGetVolume 0 pos pos pos pos MCIWndNew mciwav waveaudio if MCIWndCanRecord mciwav MCIWndRecord mciwav void CMP3 1Dlg OnStop TODO Add your control notification handler code here MCIWndStop mciwav void CMP3 1Dlg OnPlay VC 课程设计 27 TODO Add your control notification handler code here if MCIWndCanPlay mciwav MCIWndPlay mciwav void CMP3 1Dlg OnOutofmemoryChannel NMHDR pNMHDR LRESULT pResul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢性高血压患者护理方案
- 服装品质检验指南
- 考研中的挑战与突破
- 混凝土搅拌站安全风险管理报告
- 铁道工程专业毕业实习报告写作范文
- 幼儿园教师绩效考核与个人总结报告
- 职业经理人薪酬及聘任合同标准文本
- 不合格情况纠正预防措施报告
- 智能客服系统开发需求分析报告
- 家庭暴力现状分析与防控对策
- 国开电大《工程数学(本)》形成性考核作业5答案
- 部编版五年级上册语文教案1-6单元(表格式)
- GB/T 4798.5-2007电工电子产品应用环境条件第5部分:地面车辆使用
- GB/T 4513-2000不定形耐火材料分类
- 12YJ6 外装修标准图集
- 阅读与思考(选学)为什么要证明课件
- HPLC高效液相色谱解读课件
- 中医诊断学望诊
- DN1000顶管施工方案
- 《外科学》第七节 直肠癌
- DB32∕T 2975-2016 水运工程建设管理用表
评论
0/150
提交评论