媒体播放器的设计与实现毕业设计说明书范本_第1页
媒体播放器的设计与实现毕业设计说明书范本_第2页
媒体播放器的设计与实现毕业设计说明书范本_第3页
媒体播放器的设计与实现毕业设计说明书范本_第4页
媒体播放器的设计与实现毕业设计说明书范本_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

PAGE47/NUMPAGES53摘要目前常见的多媒体软件应该讲各有特色,然而几乎每一个都存在着不如人意的地点。我的课题是“基于VC++开发工具的媒体播放器软件设计”,首先是初步介绍一些当前的媒体及媒体播放器,然后是详细介绍一个由本人设计的多媒体播放器――cnplayer。该播放器是基于MFC集成开发环境,利用系统的MCI(mediacontrollerinterface)命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑、支持各种视频格式等功能优势,还实现了CD抓轨。关键词:媒体播放器;MCI;播放列表;音频;视频AbstractTherearedifferentcharacteristicamongthenormalmultimediaplayeratpresent,butthereareshortcomingforallofthesesoftwarenearly.Mycenteris"ASoftwareOfMediaPlayerDesignedbyVC++ProgramLanguage".Firstly,letmeintroducethosemediaformatsandplayersatpresent,thenthereisaparticularpresentationforthemediaplayerthatdesignedbymyself--cnplayer.ThisplayerisbasedonMFC,referringtoMCI(mediacontrollerinterface)fromsystem,havingmanygoodfunctionssuchaslittlesize,supportingmanykindsofformatofmedia,takinguplesssystemresource,supportinglistcontrolforplayingitemandcatchtrackofCD.Keywords:mediaplayer;MCI;playlist;audio;video目录摘要 IAbstract II1绪论 11.1课题研究的目的和技术进展的现状 11.1.1研究本课题的目的 11.1.2技术应用的差不多现状 11.2论文完成的要紧工作与课题研究的难点所在 21.2.1论文完成的要紧工作 21.2.2本课题的研究难点 22媒体格式简介 42.1什么是媒体? 42.1.1媒体 42.1.2多媒体 52.2浅议数字音、视频格式 52.2.1WAV格式 52.2.2MIDI格式 62.2.3CD格式 62.2.4MP3格式 62.2.5WAV格式 62.2.6MP4格式 62.2.7QuickTime格式 72.2.8DVD格式 72.2.9RealAudio格式 72.2.10AIFF格式 82.2.11ASF格式 82.3常见播放器 82.3.1RealPlayer 82.3.2WindowsPlayer 92.3.3QuickTimePlayer 93MCI命令接口编程 103.1MCI设备 103.2MCI函数与命令 103.2.1MCI命令 103.2.2MCI命令消息接口方式 133.2.3MCI命令字符串接口方式 164软件需求分析 184.1需求分析 184.2可行性研究 185.1.1差不多界面设置 195.1.2打开文件,添加列表 195.1.3播放操纵 195.1.4对列表的操纵 205.1.5菜单设置 205.2.2打开文件,添加列表 215.2.3播放操纵 215.2.4对列表操纵 225.2.5菜单设置 226软件设计结果 246.1主界面 246.1打开文件 256.1菜单操纵 267软件评价 277.1软件的特点 277.1软件的不足 27结论 28参考文献 29致谢 301绪论多媒体技术的概念和应用出现于20世纪80年代初期,通过十余年的进展,随着计算机科学网络的普及和多媒体技术的进展,已成为计算机领域进展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。1.1课题研究的目的和技术进展的现状1.1.1研究本课题的目的随着技术的进展,多媒体素材类型也增多,包括音频、视频、图像、动画等,由于音视频、图像等的信息容量大,受硬件条件限制,以往多媒体应用并不广泛,随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用,开发多媒体课件、网络课程、网站、应用软件、治理项目等均需利用多媒体素材,因此开发制作这一播放器具有备现实意义,与其它多媒体播放器比较,这一多媒体播放器具有功能强大、占用空间小的特点,它与现有多媒体资源应用状况紧密结合,既具有专门强的直观感,又不失一般性。1.1.2技术应用的差不多现状Microsoft公司1998年推出了VisualC++6.0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。与VC++5.0的最大不同之处是它的关心功能更强大,MSDN(MicrosoftDeveloperNetworking)为包括VC++6.0在内的所有微软的程序产品提供在线关心;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。因此VC++6.0可谓是Microsoft公司的王牌产品,编程功能强大而赢得宽敞程序的偏爱。多媒体技术差不多在如下若干方面开展了有效的应用:①多媒体治理信息系统、展示系统;②多媒体电子出版物(Title);③计算机辅助教学、教育培训;④计算机艺术制作、设计;⑤计算机娱乐-游戏、双向电影;⑥协同工作。有发下三大进展趋势:进一步完善计算机支持的协同工作环境;智能多媒体技术;把多媒体信息实时处理和压缩编码算法集成到CPU中。1.2论文完成的要紧工作与课题研究的难点所在针对如上所述的研究方向,本课题“基于VC++开发工具的媒体播放器软件设计”的要紧任务是深入理解各种媒体格式,开发出适用的播放器软件。因此应解决的要紧问题是如何把你了解的多媒体和VC知识应用到实际编程当中去及编制的应用软件的可用性、易用性、健壮性。1.2.1论文完成的要紧工作依照学习研究,本媒体播放器的开发基于VC++MFC的对话框,利用WindowsMCI(MediaControlInterface)控件和VC++6.0自带的ActiveX控件――ActiveMovieControlObject来实现各类媒体格式的播放及程序界面处理。首先确定要解决的问题是弄清晰MCI函数与命令消息的名称类型和功能;其次是通过分析媒体播放的具体过程,在打开媒体设备的过程中应用程序需要做哪些情况,以便在应用程序中加入对这些过程支持的代码;在对应用程序的流程有了大致的轮廓以后(最好画出流程图),在开始考虑程序框架的设计,应用程序外观的设计;最后也是最关键的确实是编写实现播放媒体的代码将播放器的差不多功能实现,紧接着确实是程序的调试和完善。1.2.2本课题的研究难点本课题的难点如下:关于VC++集成开发工具的熟练使用,特不是MFC的使用,重点放在界面设计;各类媒体设备的播放函数及相应的命令;播放列表的生成及其操作(删除而不阻碍其他文件的播放等);CD音轨的抓并转换格式。以上各点构成了本软件的难点,在克难过程中,我的分析问题解决问题的能力有了专门大的进步,通过努力,一个占用空间小、简单有用的小型媒体播放器终于完成了。我开发的媒体播放器支持所有mediaplayer支持的媒体格式的播放及其他AVI视频的播放,实现了对播放列表的操纵,CD抓轨等功能。2媒体格式简介2.1什么是媒体?2.1.1媒体一般来讲,媒体(medium,复数形式为media)是一种信息公布和表现的方法,如正文、图形、语音、音乐等,可按不同的标准分类。CCITT将媒体定义为以下五种:①感受媒体(Perceptionmedium):能直接作用于人的感官,使人产生感受的媒体。如语言、音乐、图形、活动图像、文本等。我们所讲的“多媒体”意义上的媒体,要紧是指这一类媒体。感知媒体关心人们来感知环境。要解决的问题是:人在计算机环境中如何感知信息?就目前而言,人类要紧靠视觉和听觉来感知环境的信息,触觉作为一种感知方式也慢慢引入到计算机系统中。②表示媒体(Representationmedium):为传输感受而研究出来的中间手段,以便更有效地将感受从一地传往另一地。表示媒体的特征用计算机内部表示来刻画。要解决的要紧问题是:计算机信息如何编码?例子有:文本字符用ASCⅡ或EBCDIC码表示。图像能够用JPEG格式BMP格式编码。组合音频/视频序列能够用不同的TV标准格式(PAL、SECAM等)编码。③表现媒体(Perceptionmedium):用于信息传输中电信号和感受媒体之间转换所用的媒体,意指信息输入/输出的工具和设备。要解决的问题是:信息通过何种媒体输入到计算机中或从计算机中输出?输出媒体的例子有屏幕、纸和喇叭,而输入媒体的例子有键盘、鼠标、摄像机和麦克风等。④存储媒体(Storagemedium):用于存储表示媒体的载体。数据存储并不局限于计算机的部件,因此,纸也是一种存储媒体。要解决的问题是:信息存储在什么地点?存储媒体的例子有:缩微胶片、磁盘等。⑤传输媒体(Transmissionmedium):用来将表示媒体从一地传输到另一地的物理实体。要解决的问题是,在什么上面传输信息?目前要紧使用网络来进行信息传输,网络介质有同轴电缆、光纤等,无线方式进行通信正变得越来越广泛。2.1.2多媒体从字面上看,所谓多媒体multimedia,确实是多种媒体的综合,多媒体处理技术涉及到以上五种媒体形式。但如此的理解没有接触到多媒体概念的特定的内涵,是远远不够的。为了辨析多媒体的含义,我们给出两个多媒体定义进行比较:①多媒体是指如此的一个计算机系统:交互式综合处理多种媒体信息-文本、图形、图像和声音等,使多种信息建立逻辑连接,集成为一个具有交互性的系统。(Lippincatt,Byte1990年)②多媒体是下面两种以上媒体组成的结合体:文本、图形、动画、图像、视频、声音等。(IBM,multimediaFoundation,1990年)显然,定义②是有问题的,因为按那个定义,电视节目就能够看作是多媒体。这是因为,那个定义没有体现出多媒体计算机技术的关键特性。定义①较好地体现了这一点:即多媒体的含义除多种媒体外,还包括集成性和交互性两个重要的特性。2.2浅议数字音、视频格式首先,我们来明确一下数字音、视频的概念,它是指一个用来表示声音强弱的数据序列,由模拟声音经抽样、量化和编码后得到的。简单地讲,数字音、视频的编码方式确实是数字音、视频格式,我们所使用的不同的数字音、视频设备一般都对应着不同的音频文件格式。常见的数字音、视频格式有:2.2.1WAV格式WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音、视频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采纳44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播。2.2.2MIDI格式MIDI是MusicalInstrumentDigitalInterface的缩写,又称作乐器数字接口,是数字音乐/电子合成乐器的统一国际标准。它定义了计算机音乐程序、数字合成器及其它电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,能够模拟多种乐器的声音。MIDI文件确实是MIDI格式的文件,在MIDI文件中存储的是一些指令。把这些指令发送给声卡,由声卡按照指令将声音合成出来。2.2.3CD格式大伙儿都专门熟悉CD这种音乐格式了,扩展名CDA,其取样频率为44.1kHz,16位量化位数。CD存储采纳了音轨的形式,又叫“红皮书”格式,记录的是波形流,是一种近似无损的格式。2.2.4MP3格式MP3全称是MPEG-1AudioLayer3,它在1992年合并至MPEG规范中。MP3能够以高音质、低采样率对数字音、视频文件进行压缩。换句话讲,音频文件(要紧是大型文件,比如WAV文件)能够在音质丢失专门小的情况下(人耳全然无法察觉这种音质损失)把文件压缩到更小的程度。2.2.5WAV格式WMA(WindowsMediaAudio)是微软在互联网音频、视频领域的力作。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般能够达到1:18。此外,WMA还能够通过DRM(DigitalRightsManagement)方案加入防止拷贝,或者加入限制播放时刻和播放次数,甚至是播放机器的限制,可有力地防止盗版。2.2.6MP4格式MP4采纳的是美国电话电报公司(AT&T)所研发的以“知觉编码”为关键技术的a2b音乐压缩技术,由美国网络技术公司(GMO)及RIAA联合公布的一种新的音乐格式。MP4在文件中采纳了爱护版权的编码技术,只有特定的用户才能够播放,有效地保证了音乐版权的合法性。另外MP4的压缩比达到了1:15,体积较MP3更小,但音质却没有下降。只是因为只有特定的用户才能播放这种文件,因此其流传与MP3相比差距甚远。2.2.7QuickTime格式QuickTime是苹果公司于1991年推出的一种数字流媒体,它面向视频编辑、Web网站创建和媒体技术平台,QuickTime支持几乎所有主流的个人计算平台,能够通过互联网提供实时的数字化信息流、工作流与文件回放功能。Apple公司的QuickTime电影文件现已成为数字媒体领域的工业标准。QuickTime电影文件格式定义了存储数字媒体内容的标准方法,使用这种文件格式不仅能够存储单个的媒体内容(如视频帧或音频采样),而且能保存对该媒体作品的完整描述;QuickTime文件格式被设计用来适应为数字化媒体一同工作需要存储的各种数据。因为这种文件格式能用来描述几乎所有的媒体结构,因此它是应用程序间(不管运行平台如何)交换数据的理想格式。QuickTime文件格式中媒体描述和媒体数据是分开存储的,媒体描述或元数据(Meta-Data)叫做电影(Movie),包含轨道数目、视频压缩格式和时刻信息。同时Movie包含媒体数据存储区域的索引。媒体数据是所有的采样数据,如视频帧和音频采样,媒体数据能够与QuickTimeMovie存储在同一个文件中,也能够存储在一个单独的文件或者在几个文件中。2.2.8DVD格式DVDAudio是新一代的数字音、视频格式,与DVDVideo尺寸以及容量相同,为音乐格式的DVD光碟,取样频率为“48kHz/96kHz/192kHz”和“44.1kHz/88.2kHz/176.4kHz”可选择,量化位数能够为16、20或24比特,它们之间可自由地进行组合。低采样率的192kHz、176.4kHz尽管是2声道重播专用,但它最多可收录到6声道。而以2声道192kHz/24b或6声道96kHz/24b收录声音,可容纳74分钟以上的录音,动态范围达144dB,整体效果出类拔萃。2.2.9RealAudio格式RealAudio是由RealNetworks公司推出的一种文件格式,最大的特点确实是能够实时传输音频信息,尤其是在网速较慢的情况下,仍然能够较为流畅地传送数据,因此RealAudio要紧适用于网络上的在线播放。现在的RealAudio文件格式要紧有RA(RealAudio)、RM(RealMedia,RealAudioG2)、RMX(RealAudioSecured)等三种,这些文件的共同性在于随着网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较宽敞的听众获得较好的音质。2.2.10AIFF格式AIFF(.AIF)是苹果公司开发的声音文件格式,被Macintosh平台和应用程序所支持。2.2.11ASF格式Microsoft公司的WindowsMedia的核心是ASF(AdvancedStreamFormat)。微软将ASF定义为同步媒体的统一容器文件格式。ASF是一种数据格式,音频、视频、图像以及操纵命令脚本等多媒体信息通过这种格式以网络数据包的形式传输,实现流式多媒体内容公布。ASF的最大优点是体积小,适合网络传输,用户能够将图形、声音和动画数据组合成一个ASF格式的文件,不仅能够将其他格式的视频和音频转换为ASF格式,而且用户还能够通过声卡和视频捕获卡将诸如传声器、录像机等外设的数据保存为ASF格式。另外,ASF格式的视频中能够带有命令代码,用户指定在到达视频或音频的某个时刻后触发某个事件或操作。数字音、视频给我们的生活带来了前所未有的变化。它以音质优秀、传播无损耗、可进行多种编辑和转换而成为主流,同时应用于各个方面。例如我们常使用到的音响设备、IP电话、卫星电话、数字卫星电视以及专业录音、制作等。展望以后,数字音、视频将会应用于更多的领域,而且会拥有更清晰、更真实的音质、更小巧的体积和更方便的传输和转换功能。2.3常见播放器2.3.1RealPlayerRealNetworks推出的RealPlayer是目前最受欢迎的网络流媒体播放器,它几乎支持所有的媒体文件格式。除了RealNetworks自己推出的流媒体格式ram、rmm、ra、rm、rp、rt外,还支持SMIL、SWF、MP3、WMA、AVI、MPEG、JPEG、GIF及PNG等格式,但不支持QuickTime的文件格式。RealOnePlayer是RealNetworks公司最新推出的一种新型音-视频综合播放系统,以取代该公司现有的3种主打产品,即RealPlayer、RealJukebox和GoldPass。RealOnePlayer的一大特点是多层画面功能,即当一个屏幕播放影碟或歌曲的时候,旁边有一个侧屏幕提供有关影碟或歌曲的信息或广告,能够将丰富多彩的Web页面、生动传神的画面及声音、相关背景的文字整合在同一个画面上,使用户得到一个完整的声、视、讯信息。2.3.2WindowsPlayerWindowsMediaPlayer是一个基于DirectShow体系结构的多媒体播放器。微软借助自己在操作系统上的优势,将其作为操作系统默认的媒体播放器,目前最新的版本是11.0。它几乎支持Windows下的所有媒体文件格式,包括CD音频曲目文件、ASF、MPEG-1、MPEG-2、WAV、AVI、MIDI、VOD、AU、MP3等,同时能够播放QuickTime文件。2.3.3QuickTimePlayerQuickTimePlayer是Apple公司的媒体播放器,现已推出了QuickTime7.0版,还有Windows版和Mac版,其特点是和Internet紧密结合,安装是在网上进行的。QuickTimePlayer能够直接播放的格式有QuickTime电影、AVI、AIFF音频、SGI图像、MacromediaFlash等。此外,QuickTimePlayer还能够输入各种格式的音频、视频和图像媒体文件,并能转换输出为其他格式。QuickTimePlayer还支持基于HTTP、RTP、RTSP、FTP流格式的在线音频和视频。3MCI命令接口编程WindowsMCI(mediacontrolinterface)是操纵多媒体设备的高层、通用的命令接口。MCI可操纵所有Windows能驱动的多媒体设备,包括CD音频(CDAudio)、数字视频、动画、数字化波形声音、MIDI音序器、录像机及影碟机等。MCI包含在Windows系统的MMSYSTEM.DLL动态链接库中,有以协调多媒体事件和MCI设备驱动程序之间的通信。一些MCI设备驱动程序,如影碟机设备驱动程序,能够直接操纵目标设备;而另外一些MCI设备驱动程序,如Wave和MIDI设备驱动程序,可通过MMSYSTEM中的函数,间接操纵目标设备;还有一些MCI设备驱动程序则提供与其他Windows动态链接库连接的高层接口。3.1MCI设备使用MCI的应用程序通过指定MCI的设备来区分MCI设备,设备类型讲明了设备的物理类型。表1表出了可能用到的MCI设备类型。表3-1MCI设备类型MCI设备讲明Cdaudio激光唱机Waveaudio数字化波形声音设备SequencerMIDI音序器Overlay视频叠加设备(窗口中的模拟视频)Dat数字化磁带音频播放机Digitalvideo窗口中的数字视频Scanner图像扫描仪Vcr磁带录像机或播放机Videldisc影碟机Mmmovie多媒体影片播放器Other示定义的MCI设备3.2MCI函数与命令Microsoft提供的MMSYSTEM.H文件中定义了调用了MCI功能的数据类型和函数原型,在使用MCI功能的任何源模块中都应包含该文件。3.2.1MCI命令应用程序能过MCI设备发送命令(命令消息或命令字符串)来操纵MCI设备,MCI命令能够分为4类,如下所术。系统命令:直接由MCI解释并由系统处理,是不传送到MCI设备的命令。通用命令:所有MCI设备都支持的MCI命令。可选命令:MCI设备可选择使用的MCI命令。专用命令:针对某类MCI设备或集合的专有MCI命令。MCI定义了两种接口方式,即命令消息方式和命令字符串方式。相应地,MCI命令可分为命令消息和命令字符串。要紧的MCI命令及分类如表2所示,这些命令可能具有其相应的扩展形式。表3-2MCI命令列表MCI命令消息MCI命令字符串MCI命令讲明MCI命令类型MCI_SYSINFOSYSINFO返回有关MCI设备的停息系统命令MCI_BREAKBREAK为一个指定的MCI设备设置一个终止键MCI_SOUNDSOUND播放一段Windows指定的系统声音MCI_CLOSECLOSE关闭一个MCI设备通用命令MCI_GETDEVCAPSGETDEVCAPS获得一个MCI设备的性能参数MCI_INFOINFO从一个MCI设备得到有关的信息MCI_OPENOPEN初始化一个MCI设备MCI_STATUSSTATUS从一个MCI设备返回有关的状态信息MCI_LOADLOAD从一个磁盘文件中加载数据可选命令MCI_PAUSEPAUSE暂停播放数据MCI_PLAYPLAY开始播放数据MCI_RECORDRECORD开始记录数据MCI_RESUMERESUME重新开始播放或记录MCI_SAVESAVE将数据存储到磁盘文件中MCI_SEEKSEEK向前或向后检索MCI_SETSET设置设备信息MCI_STOPSTOP停止播放或记录MCI命令都能够带两个标志命令来操纵命令的方式,即“wait”和“notify”。它们在命令消息和命令字符串接口的形式和意思如表3所示。表3-3MCI标志命令命令消息命令字符串功能MCI_WAITwait通知MCI设备等,MCI命令执行完后,才能将操纵权还给应用程序MCI_NOTIFYnotify通知MCI设备等,赶忙将操纵权交给应用程序,但当命令执行完后,向应用程序发送MM_MCINOTIFY消息所有MCI函数都以mci为前缀。对应于MCI命令消息和命令字符串接口方式,MCI函数也分为两类,即命令消息函数和命令字符串函数。在MMSYSTEM.H中定义了这些函数的原型。MCI函数如表4所示。表3-4MCI函数函数名功能类型mciSendCommand发送命令消息命令消息接口函数mciGetDeviceID猎取MCI设备的IDmciSetYieldProc设定一个回调函数,在结束带wait标志的命令时调用mciGetYieldProc猎取当前的回调函数mciSendString发送命令字符串命令字符串接口函数mciGetErrorString猎取当前MCI错误的字符串描述公用函数3.2.2MCI命令消息接口方式MCI命令消息接口方式利用消息和数据结构来给多媒体设备发送命令和接收MCI设备传来的信息。这种方式的接口函数要紧有3个,即mciSendCommand,mciGetDeviceID和mciGetErrorString。它们的函数原型如下:MCIERRORmciSendCommand(MCIDEVICEIDIDDevice,//设备IDUINTuMsg,//命令消息DWORDfdwCommand,//命令消息标志DWORDdwParam//命令消息使用的结构参数地址);MCIDEVICEIDmciGetDeviceID(LPCTSTRlpszDevice//设备类型);BOOL(DWORDfdwError,//错误代码LPTSTRlpszErrorText,//错误描述UINTcchErrorText//错误描述长度);mciGetDeviceID通过传送MCI设备名lpszDevice来猎取MCI_OPEN命令消息找开MCI设备的标识号wDeviceID,其值可用于mciSendCommand的参数wDeviceID。mciSendCommand用于向标识号为wDeviceID的MCI设备发送命令消息uMsg。当用送MCI_OPEN命令消息打开一个设备时,将自动创建一个设备标识号。假如设备打开成功,能够从MCI_OPEN_PARMS结构的wDeviceID数据域中取得该设备的标识号,该值将保存以供后续的MCI命令使用。假如mciSendCommand调用成功,则返回值为0;否则表示设备驱动出错,这时可用mciGetErrorString来取得错误信息的文字描述。MCI提供一个名为MCI_ALL_DEVICE_ID的专门设备标识号。当前所有已打开的MCI设备都将接收到对MCI_ALL_DEVICE_ID发送的任何MCI命令。使用任何一个MCI设备前都应先用MCI_OPEN打开它。打开MCI设备时,要求指定相应的MCI_OPEN_PARMS结构。假如打开设备成功,则该结构的wDeviceID域返回MCI设备的标识号ID。使用MCI_OPEN命令消息时可使用的命令消息中表5所示。MCI_OPEN_PARMS结构定义如下:typedefstruct{DWORDdwCallback;//回调窗口句柄MCIDEVICEIDwDeviceID;//设备打开成功,返回的设备号LPCSTRlpstrDeviceType;//设备类型LPCSTRlpstrElementName;//复合设备的设备元素,通常为文件名LPCSTRlpstrAlias;//指定的设备不名}MCI_OPEN_PARMS;表3-5MCI_OPEN命令消息标志消息标志意义MC_OPEN_ALIASMCI_OPEN_PARMS结构的lpstrAlias域中指定了设备不名MC_OPEN_ELEMENTMCI_OPEN_PARMS结构的lpstrElementName域中指定了设备元素MC_OPEN_SHAREABE按共享设备方式打开设备MC_OPEN_TYPEMCI_OPEN_PARMS结构的lpstrDeviceType域中指定了设备类型MC_OPEN_TYPE_IDMCI_OPEN_PARMS结构的lpstrDeviceType域中指定了设备类型ID打开一个简单的MCI设备不需要指定设备元素,即不需要指定一个数据文件,因此能够仅仅指定MCI_OPEN_PARMS结构中的wDeviceID和lpstrDeviceType两个数据域。要打开一个复合的MCI设备,必须指定设备元素数据域lpstrElementName和设备类型数据域lpstrDeviceType。关于打开复合MCI设备,有以下3种方式可供选择:为确定MCI设备的性能,能够只指定设备的类型来打开MCI设备。这时,只同意确定MCI设备的性能,然后关闭设备,不般不能进行其它的操作。为使一个设备元素与指定设备相联系,应同时指定设备元素(数据文件名)和设备类型。这时可对设备进行相应的各种操作。在使用隐含的MCI设备时,可只指定MCI设备(数据文件名),而把设备类型指定为NULL;MCI将依照设备元素的扩展名从系统定义中选择隐含约定的MCI设备。应用程序在使用完一个MCI设备后应明确地关闭该MCI设备。MCI_CLOSE命令消息用于关闭并释放MCI设备,即取消应用程序对MCI设备或设备元素的访问权。当用MCI_SYSINFO命令消息猎取MCI设备系统信息时,需要在mciSendCommand的dwParam参数中指定MCI_SYSINFO_PARMS结构的地址,系统信息将通过该结构返回。与MCI_SYSINFO命令消息相关的消息标志如表6所示。MCI_SYSINFO_PARMS结构定义如下:typedefstruct{DWORDdwCallback;//回调窗口句柄LPSTRlpstrReturn;//返回信息缓冲区地址DWORDdwRetSize;//返回信息大小DWORDdwNumber;//索引号UINTwDeviceType;//设备类型}MCI_SYSINFO_PARMS;表3-6MCI_SYSINFO命令消息标志消息标志意义MCI_SYSINFO_QUANTITY返回指定的设备类型的数目,如与MCI_SYSINFO_OPEN一起使用,则仅返回已打开的设备的数目MCI_SYSINFO_NAME返回设备名,如与MCI_SYSINFO_OPEN一起使用,则仅返回已打开的设备的名称MCI_SYSINFO_OPEN仅返回已打开设备的信息MCI_SYSINFO_INSTALLNAME指定设备的安装名称在使用MCI设备时,还应注意共享、等待与通告等标志的使用。3.2.3MCI命令字符串接口方式MCI命令字符串使用ASCII字符串来发送驱动MCI设备的命令,这种方式采纳的接口函数有mciSendString、mciGetErrorString。mciSendString用于向MCI设备发送命令字符串,其函数原型如下:MCIERRORmciSendString(LPCTSTRlpszCommand,//指向一个以NULL结尾的MCI命令字符串,格//式如下:comm.anddevice_nameargumentLPTSTRlpszReturnString,//指向一个用于存储MCI命令执行后返回的//字符串信息的缓冲区UINTcchReturn,//缓冲区大小HANDLEhwndCallback//指定一个同意MM_MCINOTIFY的窗口句柄,//非MCI命令中包含了notify标志,否则该参数可忽略。);4软件需求分析4.1需求分析随着计算机技术的进展和网络的普及,多媒体素材类型越来越多,包括音频、视频、图像、动画等,由于音视频、图像等的信息容量大,受硬件条件限制,以往多媒体应用并不广泛,随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用,开发多媒体课件、网络课程、网站、应用软件、治理项目等均需利用多媒体素材。本软件是为满足部分人的扫瞄需求而开发的,能打开多种媒体格式,小巧简单,此外,为了方便使用,还具有对播放列表进行操作的功能,因此开发制作这一播放器具有备现实意义。4.2可行性研究要开发一个软件程序,其方案十分重要。一个合理可行的方案有助于减少程序员的工作量、缩短开发周期,更重要的是能够开发出运行效率更高、可移植性更好、健壮性更强的代码。以下是本程序的方案论证:本程序的开发用的是VC++的MFC集成开发环境,开发本程序的方案大概有如下二种:1、利用VC开发环境提供的ActiveX控件――ActiveMovieControlObject2、利用系统自带的MCI命令接口来编程。(1)第一种方法是使用ActiveX控件,MFC能够利用“ActiveMovieControlObject”控件直接操作,实现起来特不简单,但用到的是完全不人的东西,故而不是太好。(2)第二种方法是使用系统自带的MCI命令接口。MCI包含在系统的MMSYSTEM.H文件中,参数较多,功能比较齐全,尽管使用起来比较烦琐,然而更具有开发意义。综上所述,使用系统自带的MCI命令接口来编程的方法是比较理想的选择。以下的开发设计流程确实是基于第二种方案的设计流程。5软件开发与设计5.1程序设计的差不多思想最初运用MFC,建立对话框为差不多框架。因为本软件是以系统自带的MCI命令接口为基础,因此为丰富本软件,将重点和难点放在了界面设计方面。5.1.1差不多界面设置在差不多界面确定后,添加各类控件,如图所示:图5-1对话框差不多框架图5-1对话框差不多框架将Button定义为自定义CButtonST按纽类的对象,进度滑条定义为自定义的CMySliderControl类的对象,时刻显示静态文本定义为自定义的CMatrixStatic。各个控件的位置是由程序操纵,因此原来摆在什么地点并不阻碍程序显示出来的效果。5.1.2打开文件,添加列表打开文件有两种方法,一是通过主面板上打开按纽,二是通过菜单中文件的子菜单――打开文件。添加文件:CButtonST,IDC_ADD,m_add5.1.3播放操纵播放操纵包括:播放(暂停),停止,上一首,下一首,循环,播放进程操纵。播放操纵也可在菜单中进行操纵。播放:CButtonST,IDC_PLAY,m_play暂停:CButtonST,IDC_PAUSE,m_pause停止:CButtonST,IDC_STOP,m_stop上一首:CButtonST,IDC_PREVIOUS,m_previous下一首:CButtonST,IDC_NEXT,m_next循环:CButtonST,IDC_REPEAT,m_repeat播放进程操纵CMySliderControl,IDC_SLIDER,m_slider5.1.4对列表的操纵列表的操纵包括:添加文件,删除当前所选项,删除全部,在列表中双击播放,列表的隐藏弹出。设置如下:添加文件:CButtonST,IDC_ADD,m_add删除当前所选项:CButtonST,IDC_DEL,m_del删除全部:CButtonST,IDC_DELALL,m_delall列表中的双击播放:LISTBOX本身的LBN_DBLCLK消息函数OnDblclkList()列表的隐藏弹出:CButtonST,IDC_HIDLIST,m_hid5.1.5菜单设置除去上述菜单操纵之外,菜单中还包括音量操纵,窗口总在最上。音量操纵:IDC_ONVOICE,m_voice窗口总在最上:ID_W_TOP5.2程序设计的详细讲明5.2.1界面设置各个自定义类的声明:CButtonST类:详细讲明请见程序。CMySliderControl类:详细讲明请见程序。CMatrixStatic类:详细讲明请见程序。先设置差不多界面的图形,如下:图5-2主界面的图在主对话框的类定义中声明:private: voidInitMPlayerFace();//初始化界面在主对话框的初始化程序里调用该函数,具体定义请参照程序中函数:voidCMediaDlg::InitMPlayerFace()在主界面设置好相应的位置后,就开始定义各个控件的具体功能。5.2.2打开文件,添加列表打开添加文件的程序要紧写在按纽的BN_CLICKED消息函数里面。程序详见voidCMediaDlg::OnAdd()5.2.3播放操纵1)播放:voidCMediaDlg::OnPlay()2)暂停:voidCMediaDlg::OnPause()3)停止:voidCMediaDlg::OnStop()4)上一首:voidCMediaDlg::OnPrevious()5)下一首:voidCMediaDlg::OnNext()6)循环:voidCMediaDlg::OnRepeat()7)播放进程操纵voidCMediaDlg::OnReleasedcaptureSlider(NMHDR*pNMHDR,LRESULT*pResult)以上程序代码详见毕业设计。5.2.4对列表操纵1)添加文件:CButtonST,IDC_ADD,m_add此函数同上述打开文件ONADD()。2)删除当前所选项:voidCMediaDlg::OnDel()3)删除全部:voidCMediaDlg::OnDelall()4)列表中的双击播放:LISTBOX本身的LBN_DBLCLK消息函数OnDblclkList()voidCMediaDlg::OnDblclkList()5)列表的隐藏弹出:voidCMediaDlg::OnHidlist()5.2.5菜单设置1)菜单是从按纽出来,而不是原来意义的直接添加在对话框上。菜单按纽:voidCMedi

温馨提示

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

评论

0/150

提交评论