用c++制作的播放器的课程设计报告
- 格式:docx
- 大小:23.44 KB
- 文档页数:13
计算机科学与技术学部C++课程设计题目简单音乐播放器学部计算机科学与技术班级 1103指导教师李军姓名周德群,胡中立2012年6月13日摘要音乐播放器,是目前用户选择播放任意格式的音频文件的软件,如酷狗、QQ音乐等。
一般的音频播放器,都可以支持MP3、wave、AU、VOC等文件格式的播放。
在此次设计的音频播放其中,可以实现对音频文件的打开、播放、暂停、停止、上一曲/下一曲、音量调控等操作。
由于MCI(Media Controller Interface)命令接口编程易于实现,具有体积小、支持的播放格式多、系统资源占有少等优点,同时MCI支持播放列表编辑、支持文件的打开、保存等功能,所以本课题利用Visual C++ 6.0作为开发环境,结合其自带的MCI函数库和MVC设计思想开发一个简洁实用的播放器软件,为用户提供一个友好的图形化操作界面。
关键词:媒体播放器;播放列表;音频;MCI函数课程设计任务分配表课程设计成绩表目录前言 (1)第1章课题背景和概述 (2)1.1 课题背景 (2)1.1.1 音频播放器简介 (2)1.1.2 目的和意义 (2)1.2 课题概述 01.2.1 功能简介 01.2.2 主要工作和理论依据 (3)第2章设计简介及设计方案论述 (4)2.1 需求分析 (4)2.2 系统功能及结构简介 (4)2.2.1 系统功能 (4)2.2.2 系统结构 (4)第3章详细设计 (5)3.1 界面设计 (5)3.1.1 播放器界面设计 (5)3.1.2 按钮上的位图显示 (5)3.2 各模块功能设计 (6)3.2.1 各按钮功能的实现 (6)3.2.2 进度条显示 (7)第4章设计结果及分析 (8)4.1 运行结果显示 (9)4.1.1打开文件并播放 (10)4.2 结果分析和不足 (10)总结 (11)参考文献 (12)附录 (13)前言音频播放器(audio player)是一种可储存、组织与播放音讯档案格式装置。
常被称为“MP3播放器”(因为MP3格式的普遍性),它可以播放很多其他的格式,如WMA,AAC,WAV等。
所以,应运而生的是音频播放器软件,能够为用户播放常见的格式音频文件。
并且,在使用的过程中,也尽可能设计出一些人性化的设计。
比如,能最小化到托盘并可以进行操作。
良好的人机交互界面,也能给人以美好的感官享受。
本次设计完成的播放器软件,能够支持播放多种格式的音频文件,常见的如MP3,WMA,AAC,WAV等。
对正在播放的歌曲,可以进行暂停、停止的操作,也可以任意添加歌曲并选择播放。
此播放器也可以最小化和最小化到托盘,方便用户在播放音乐的时候,免受打扰。
也可以在最小化到托盘的状态下,退出播放器。
本次课程设计,主要是检验这一学期,我们通过对MFC Windows应用程序设计这门课学习,能够把所学的知识应用到实际的能力。
第1章课题背景和概述1.1 课题背景1.1.1 音频播放器简介音频播放器(audio player)是一种可储存、组织与播放音讯档案格式的装置。
常被称为“MP3播放器”(因为MP3格式的普遍性),它可以播放很多其他的格式,如WMA,AAC,WAV等。
一些格式会跟有限制性的技术 DRM合并, 比如Janus 和FairPlay, 一般是一些付费下载网站的一部分。
其它一些格式则是完全的专利自由或者在另外一些方面开放,比如Ogg Vorbis,FLAC,Speex (Ogg开放多媒体工程的所有部分),以及Module file格式。
1.1.2 目的和意义通过独立设计完成制作一个播放器软件,更加理解了MFC对话框的构成框架,以及各个类之间数据传递的关系。
同时,对鼠标和键盘的多消息响应有了进一步的认识。
在设计制作的过程中,C++语言是基础,在熟悉MFC Windows 程序设计的同时,也了解了C++程序语言设计。
1.2 课题概述1.2.1 功能简介本次设计完成的播放器软件,能够支持播放多种格式的音频文件,常见的如MP3,WMA,AAC,WAV等。
对正在播放的歌曲,可以进行暂停、停止的操作,也可以任意添加歌曲并选择播放。
此播放器也可以最小化和最小化到托盘,方便用户在播放音乐的时候,免受打扰。
也可以在最小化到托盘的状态下,退出播放器。
本次课程设计,主要是检验这一学期,我们通过对MFC Windows应用程序设计这门课学习,能够把所学的知识应用到实际的能力。
1.2.2 主要工作和理论依据MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows 应用程序的功能,这就是向导生成的所谓MFC应用程序框架。
每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。
这些函数,必须通过类定义对象才能使用。
在本次设计中,首先,理清课程设计和编写程序的思路,明确程序所要用到的函数,并做好了解。
然后,再利用C++类的继承与派生原理来构造所需要的类,编写实现每项功能的详细代码。
利用MFC提供的菜单资源来创建菜单,通过类向导建立类,函数,或者消息响应,来实现播放器的各种功能。
第2章设计简介及设计方案论述2.1 需求分析随着社会的发展,有越来越多的人接触电脑,也有越来越多的人喜欢在上网、工作的时候,播放一点音乐,娱乐一下,缓解一下。
所以,应运而生的是音频播放器软件,能够为用户播放常见的格式音频文件。
并且,在使用的过程中,也尽可能设计出一些人性化的设计。
比如,能最小化到托盘并可以进行操作。
良好的人机交互界面,也能给人以美好的感官享受。
2.2 系统功能及结构简介2.2.1 系统功能此音频播放器可以播放多格式的音频文件。
在播放的时候,需要打开本地的音乐文件,选择想要打开的文件,点击播放便可以播放。
在播放的过程中,如果有事离开想要停止播放,可以点击暂停按钮,等到需要的时候,仍然可以点击播放,继续播放。
如果需要退出,点击关闭按钮即可。
如果想换首歌,点击下一首或者上一首的按钮便可以了。
2.2.2 系统结构此播放器编写的时候,利用的是MFC对话框程序的构成框架,然后再利用Windows提供的资源,运用控件,自己制作了对话框和人机交互界面。
在制作界面的同时,也制作了各个按钮,并完成各个按钮的消息响应,便完成响应函数实现了功能。
第3章详细设计3.1 界面设计3.1.1 播放器界面设计打开VC C++6.0新建一个工程,选择对话框。
便生成了一个窗口。
然后打开ResouceView,点开Dialog,插入Dialog,利用控件,绘制各个按钮。
如图3-1所示图3-1为对话框添加9个按钮(Button),在Styles标签中选中Bitmap属性。
将它们的ID分别为 IDC_PREVIOUS 上一首 IDC_AHAND 前进 IDC_PAUSE 暂停IDC_PLAY 播放 IDC_NEXT下一首 IDC_BACK 后退 IDC_STOP停止IDC_LIST1 ADDFILE添加 IDC_DELETEFILE删除IDCANCEL取消 IDC_SLIDE。
以实现对文件的各项操作。
然后,在ClassWizard里为2个按钮分别添加变量,分别命名为; IDC_LIST m_list, IDC_SLIDE m_position以对按钮进行操作。
然后为其他的控件添加响应函数发出单机消息。
3.2 各模块功能设计3.2.1 各按钮功能的实现(1)处理“打开”按钮单击“打开”按钮后,在Onopen()函数中,首先对文件类型进行过滤,调用OpenFiles()函数打开对话框选择一个音频文件,通过InitPath()函数获取文件路径,通过InitPath()函数获取文件名后,调用SaveList()函数在Static Text 控件上显示你所选择的歌曲文件名,然后再单击播放按钮,便可以播放歌曲。
(2)处理“播放”按钮单击“播放”按钮后,在OnPlay()函数中,通过调用Midi类中的Open()函数获取刚才选择的文件路径以及文件名,调用该类的Midi类中的Play()函数播放歌曲,此时调用DisplayInfo()函数在Static Text控件上显示正在播放的歌曲,进行歌曲的播放,然后利用GetDlgItem()函数设置“播放”按钮不可用。
(3)处理“停止”按钮单击“停止”按钮后,在OnStopBUTTON()函数中,首先通过调用Midi类的Stop()函数停止正在播放的歌曲,此时的歌曲处于暂停时的进度上,利用GetDlgItem()函数设置“播放”按钮可用。
(5)处理“上一曲/下一曲”按钮单击“上一曲”按钮时,在OnNextBUTTON()函数中,通过调用Midi类中的Next()函数,停止当前播放放的歌曲,并播放当前列表中的下一曲。
“下一曲”按钮的处理与“上一曲”类似。
(6)处理“关闭”按钮单击“关闭”按钮后,在OnCloseWindow()函数中,调用CDialog类的OnOK()函数将退出对话框,结束程序的运行。
(7)处理“快进”按钮单击“快进”按钮时,在OnAhand()函数中,通过调用mci函数并快进播放的歌曲,后退与“快进”类似。
3.2.2进度条显示进度条在前进的过程中,其总长度应该为歌曲长度。
如果想要在一首歌播放完毕后,进度条加好走完,必须先利用GetMediaLength(nLength, bProgress)函数获取歌曲长度,然后利用UpdatePlayTime(BOOL bProgress)函数不断更新歌曲播放的时间,最后通过OnTimer()来实现。
在播放的过程中,依旧存在一些问题。
比如,不能通过双击歌曲来达到播放的目的。
如果想完成“上一曲/下一曲”的操作,在添加歌曲文件的时候,必须是一次性的添加多首歌曲。
如果每次只添加一首,添加多次,便不能完成歌曲之间的更换。
第4章设计结果及分析4.1 运行结果显示4.1.1打开文件并播放点击“增加”按钮,选择想要播放的歌曲,所选择的文件会显示在“播放列表”中。
想要播放哪一首,点击播放即可。
点击“下一曲”按钮,功能实现如下图所示。
点击“上一曲”按钮,功能实现如下图所示。
点击“快进”按钮,功能实现如下图所示。
点击“删除”按钮,功能实现如下图所示。
4.2 结果分析和不足虽然说这次的设计结果,从表面上看来,基本功能是实现了。
但依旧还是存在很多不足。
最突出的就是进度条的问题。
进度条在前进的过程中,其总长度应该为歌曲长度。
如果想要在一首歌播放完毕后,进度条加好走完,必须先利用GetMediaLength(nLength, bProgress)函数获取歌曲长度,然后利用UpdatePlayTime(BOOL bProgress)函数不断更新歌曲播放的时间,最后通过OnTimer()来实现。