多媒体播放器的设计与实现报告
多媒体播放器的设计与实现报告

《多媒体技术》课程论文题目:基于MFC的多媒体播放器的设计与实现专业:班级:姓名:学号:指导老师:摘要:本程序是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能的多媒体播放器。
具有打开文件、播放、暂停、全屏、音量调节、静音、快进、快退等基本播放功能。
系统开发平台为Windows 7操作系统,程序设计环境采用Visual C++ 6.0。
关键字:MFC,ActiveMovie,多媒体1.开发工具及相关知识介绍MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。
vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。
MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。
xx是版本,它封装了mfc内核,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。
一个MFC窗口对象是一个C++ CWnd类(或派生类)的实例,是程序直接创建的。
在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。
而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。
Windows窗口在MFC 窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。
Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。
多媒体播放器的设计与实现

多媒体播放器的设计与实现引言多媒体播放器是一种能够播放音频和视频文件的软件或硬件设备。
随着科技的发展,多媒体播放器在我们的生活中扮演着重要的角色。
本文将介绍多媒体播放器的设计与实现。
设计目标多媒体播放器的设计目标是为用户提供良好的播放体验,包括流畅的播放、清晰的画面与音质、丰富的功能等。
多媒体播放器还需要具备良好的界面设计和易用性,以便用户能够方便地操作和控制。
设计思路1. 文件格式支持:多媒体播放器需要支持常见的音频和视频文件格式,如MP3、WAV、MP4、AVI等。
为了实现这一目标,可以使用开源的解码库,并与播放器进行集成。
2. 播放控制:多媒体播放器需要提供基本的播放控制功能,包括播放、暂停、停止、快进、快退等。
还需要支持播放列表功能,用户可以随时添加、删除和编辑播放列表中的文件。
3. 音频和视频处理:为了提供良好的播放效果,多媒体播放器需要对音频和视频进行处理。
对于音频,可以使用音频处理库来实现均衡器、音效调节等功能。
对于视频,可以使用视频处理库来实现亮度调节、对比度调节、旋转等功能。
4. 界面设计:多媒体播放器的界面设计需要简洁直观,方便用户操作和控制。
可以采用现代化的界面设计风格,并提供可自定义的界面主题和布局。
5. 扩展性:多媒体播放器需要具备一定的扩展性,以便将来可以加入更多的功能和特性。
可以使用插件化的设计思路,将各个功能模块进行解耦,方便添加和移除功能模块。
实现方法1. 选择开发平台:根据目标用户群体和需求,选择合适的开发平台。
例如,可以选择使用C++和Qt框架进行跨平台开发,以便在Windows、Mac和Linux等操作系统上运行。
2. 使用开源库:为了加快开发进度和提升软件质量,可以选择使用开源的播放器引擎和相关库。
例如,可以使用FFmpeg进行音视频解码,使用SDL或Qt Multimedia进行音视频播放。
3. 界面设计:使用现代化的界面设计风格,采用响应式设计,使界面能够自适应不同的屏幕大小和分辨率。
基于QT的多媒体播放器系统的设计与实现

基于QT的多媒体播放器系统的设计与实现本文将介绍一个基于QT的多媒体播放器系统的设计与实现。
该系统具有用户友好的界面和丰富的功能,使用户可以方便地管理和播放各种多媒体文件。
设计目标:1. 提供支持多种多媒体文件格式的播放功能,包括音频和视频。
2. 具备基本的媒体管理功能,如文件添加、删除、重命名和分类。
3. 支持播放列表功能,用户可以自定义创建和编辑播放列表。
4. 提供音频和视频的基本控制功能,如播放、暂停、停止、快进、快退和音量调节。
5. 支持全屏播放和屏幕截图功能。
6. 具备历史记录功能,记录用户播放过的媒体文件。
系统设计:1. 界面设计:使用QT的UI设计工具创建界面,包括主界面和设置界面。
主界面包括媒体文件列表、播放控制按钮、进度条和音量调节。
设置界面包括媒体库设置、播放器设置和图像设置等。
2. 媒体管理功能:通过QT的文件操作功能实现媒体文件的添加、删除、重命名和分类。
用户可以使用文件对话框选择要添加的媒体文件,也可以直接拖放文件到播放器界面。
3. 播放功能:使用QT的多媒体框架实现音频和视频的播放功能。
通过媒体播放器组件实现媒体文件的播放、暂停、停止、快进、快退和音量调节等功能。
4. 播放列表功能:使用QT的列表组件实现播放列表功能。
用户可以创建新的播放列表、添加媒体文件到播放列表、编辑播放列表和删除播放列表。
5. 全屏播放和屏幕截图功能:通过QT的窗口系统实现全屏播放功能,并使用QT的图像处理功能实现屏幕截图功能,让用户可以保存当前播放的图像。
6. 历史记录功能:使用QT的数据库功能实现历史记录功能,记录用户播放过的媒体文件和播放进度。
系统实现:1. 使用QT的开发环境创建一个新的QT项目。
2. 使用QT的UI设计工具设计和创建播放器的主界面和设置界面。
3. 实现媒体管理功能,包括文件的添加、删除、重命名和分类功能,并更新媒体文件列表。
4. 实现播放功能,使用媒体播放器组件实现音频和视频的播放、暂停、停止、快进、快退和音量调节功能。
(广告传媒)多媒体播放器 课程设计报告

(设计标题)多媒体播放器用户签名:开发成员:孟凡林开发时间:2010—12-23目录0引言 (4)1 工作计划 (4)1.1主要工作阶段划分 (4)1.2工作任务分工 (4)2需求分析 (4)2.1概述 (4)2.2用户分析 (5)2.3 约束条件 (5)2.4功能需求 (5)2.5用户界面需求 (5)3设计与实现 (5)3.1概述 (5)3.2详细设计 (6)3.1.1类的抽象及设计 (6)3.3 主要程序文件 (6)3.4开发环境以及部署环境要求 (7)3.5 主要源码 (7)4 测试 (11)4.1概述 (11)4.2 测试环境 (11)4.3测试计划 (11)4.4测试项目及结果 (11)5、工作总结 (12)5.1工作成果 (12)5.2过程分析 (13)5.3经验教训及其分析 (13)0引言现在人们娱乐的方式多种多样,已经有了很明显的变化,以前的户外运动现在已经在锐减,换而之的是网络游戏与网上聊天,而在同时听听音乐看看电影也成为了巨大的需求,所以很多多媒体播放软件出现了,形形色色各种都有,而我也赶下时髦,体验一下编写的过程,现在才发现这并不难,重要的是插件的插入,而其他的功能实现只需调用相应函数就行了!1 工作计划1.1主要工作阶段划分(用表格或图表的形式列出你们小组各个阶段的时间进度大致安排)1.2工作任务分工2需求分析2.1概述1)到网上或图书馆查找相关系统函数实现相应的功能;2)使用MFC构建相应的用户界面2.2用户分析1)要求有稳定的性能,可实现要求的功能;2)拥有较好的界面,很方便人操作!2.3 约束条件(作为开发人员的,通常你的小组的工作时间和人员是一个明显约束;另外站在用户的角度,他们对你有什么约束要求,请从这两个角度进行陈述。
)2.4功能需求能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量!2.5用户界面需求3设计与实现3.1概述使用MFC构建相应的用户界面,实现相应的功能----------能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量,然后向其中加入各个函数实现相应的功能!3.2详细设计3.1.1类的抽象及设计1)控件active movie3类,主要用来播放各种类型的文件,其封装的各种成员函数使其成为MFC设计播放器必不可少的控件类;2)对话框基类cDlg类,及其派生类:(a)控件repeatbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时再次播放打开的文件;(b)控件copenbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时提供资源管理器供用户选择文件;(c)控件playbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时播放打开的文件;(d)控件pausebtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时暂停播放打开的文件;(e)控件lowerbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时减小播放音量;(f)控件upperbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时增大播放音量(g)控件stopbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时停止播放打开的文件;(h)控件fullscreen类,作为播放器打开文件的消息响应媒介,能够做到被点击时全屏播放打开的文件;至于其他的,当我们使用MFC编程时,会有很多封装的类供我们使用,所以就不一一列举了!3.3 主要程序文件1)头文件(为类加入相应的标准流,库):Activemovie3.h-------控件;stdafx.h-----框架构成;多媒体.h-----多媒体的应用;多媒体Dlg.h------对话框;resourse.h-----为多媒体.rc服务!2)源文件(完成各种类的定义与实现):Activemovie3.cpp-------控件;stdafx.cpp-----框架构成;多媒体.cpp----多媒体的应用;多媒体Dlg.cpp------对话框;多媒体.rc-----运行过的效果!3.4开发环境以及部署环境要求1)Vs2010;2)3.5 主要源码1)打开文件void CMyDlg::OnOpenButton(){// TODO: Add your control notification handler code hereCString strFilter = "Mp3 File(*.mp3)|*.mp3| ";strFilter += "MPEG File(*.mpg;*.mpeg)|*.mpg;*.mpeg| ";strFilter += "Wave File(*.wav)|*.wav| ";strFilter += "AVI File(*.avi)|*.avi| ";strFilter += "All File(*.*)|*.*| "; //过滤适当的文件必须以0区分,以00结束,否则会出现参数不正确CFileDialog dlgOpen(TRUE,NULL,NULL,OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT,strFilter,this);//为CFileDialog定义对象DWORD MAXFILE = 2412; // 分配足够空间dlgOpen.m_ofn.nMaxFile = MAXFILE; // 设置buffer的大小CString strFileName;char* buf = new char[MAXFILE]; //分配空间dlgOpen.m_ofn.lpstrFile = buf;dlgOpen.m_ofn.lpstrFile[0] = NULL; //赋值if(IDOK == dlgOpen.DoModal()){POSITION pos = dlgOpen.GetStartPosition();while (pos != NULL){strFileName = dlgOpen.GetNextPathName(pos);// 获取独立文件名m_list1.InsertString(m_list1.GetCount(),strFileName);//加至播放列表}}delete [] buf; //释放空间}2)播放文件void CMyDlg::OnPlayButton(){// TODO: Add your control notification handler code here m_ActiveMovie.Run();//播放文件SetTimer(0,20,NULL);//设置定时器}3)暂停播放void CMyDlg::OnPauseButton(){// TODO: Add your control notification handler code here m_ActiveMovie.Pause();}4.停止播放void CMyDlg::OnStopButton(){// TODO: Add your control notification handler code here m_ActiveMovie.Stop();//停止播放文件KillTimer(0);//关掉定时器}5.重复播放void CMyDlg::OnReapetButton(){// TODO: Add your control notification handler code here if(!isRepeat){isRepeat=TRUE;SetDlgItemText(IDC_STATIC2,"Status:Repeat");}else{isRepeat=FALSE;SetDlgItemText(IDC_STATIC2,"Status:Normal");}6.增大声音void CMyDlg::OnUpperButton(){// TODO: Add your control notification handler code here long Volume=m_ActiveMovie.GetVolume();m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(Volume+100);m_ActiveMovie.Run();}7.减小声音void CMyDlg::OnLowerButton(){// TODO: Add your control notification handler code here long Volume=m_ActiveMovie.GetVolume();m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(Volume-100);m_ActiveMovie.Run();}8.全屏播放void CMyDlg::OnFullButton(){// TODO: Add your control notification handler code here m_ActiveMovie.Pause();m_ActiveMovie.SetFullScreenMode(true);m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);m_ActiveMovie.Run();}9.关闭窗口void CMyDlg::OnCloseButton(){// TODO: Add your control notification handler code here m_ActiveMovie.CloseWindow();²}10.退出void CMyDlg::OnClickedExitButton(){// TODO: Add your control notification handler code here PostQuitMessage(0);//;}4 测试4.1概述1)打开文件(从曲库中找出歌曲加入列表中)2)播放,暂停,停止,全屏显示,停止,重播(active movie实现功能)4.2 测试环境1)2)vs20104.3测试计划1)打开文件2)播放及各种键的使用3)多次运行,检查稳定性4.4测试项目及结果1)打开文件2)5、工作总结5.1工作成果工作成果不是很明显,因为我自作自受,霉运连连让我乱了阵脚,最后的一个大悲剧直接把我将死了!我没有编写出来一个成功的程序,以失败告终!我完了,Oh,myGod!5.2过程分析唉!因为自己眼光不够敏锐,没有选择正确的题目,一开始选择了邮件收发程序,当框架做好以后,开始实现各种功能了,才发现自己并不明白MAPI是怎么一回事,到处查也不是很会用,协议更没搞清楚,而且也不知道应该调用哪个系统函数来实现附件的添加,并且第三步由于协议问题也没头绪,联想到上学期做了好久也没搞出个好程序的经验,我就果断放弃了,改做文件编辑,结果又是因为搞不清怎么调出资源管理器搞的头皮发麻,最后又是悲剧的放弃了,现在一想都后悔啊!意志太不坚定了,就那么个小困难就把我给吓到了,唉!折腾了两天半已经是星期三的下午了,眼看期限快到了,我没办法,急得要命,没办法,这时候想起来老师曾经说过网上的媒体播放器很多,于是就到网上去搜了一个,结果一弄。
一、多媒体播放器可行性研究报告

、多媒体播放器可行性研究报告多媒体技术的概念和应用出现于20世纪80年代初期,经过十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。
多媒体资源主要包括两类:一类是与视频相关的数字多媒体格式视频资源,如扩展名为.AVI、.DAT、.ASF、.MPG等的电影文件,扩展名为.FLC的动画文件、扩展名为.SWF的Flash文件,以及扩展名为.RM、.RAM、.RA等Real视频音频文件;另一类是以.MP3 > .WAV > .MID、.RMI 等为扩展名的音频文件,他们是广大计算机爱好者经常使用的文件,由于计算机里各种多媒体资源众多,可以设计实现一个多媒体资源管理播放系统,用以对这些多媒体资源进行预览、管理和播放,同时提供相关的声音控制、进度控制、图像大小控制、抓图、列表管理和循环播放工具。
矚慫润厲钐瘗睞枥庑赖賃軔。
一、编写目的:可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。
明确开发风险及其所带来的经济效益。
聞創沟燴鐺險爱氇谴净祸測。
项目背景:开发软件名称:多媒体播放器项目任务提出者:老师项目开发者:陈娇娇、朱敏、程娟、邢真臻、马玲用户:05网络工程项目与其他软件,系统的关系:本项目采用客户机/服务器原理,客户端的程序是建立在Windows NT系统上以Delphi为开发软件的应用程序残骛楼諍锩瀨濟溆塹籟婭骤。
二、可行性研究的前提2.1要求主要功能:个性化界面、声音控制、列表管理、画面缩放、抓图、多媒体播放性能要求:功能足够强大,处理速度快,支持多种格式输出要求:画面清晰、流畅;音频效果好完成期限:本学期末2.2目标:系统实现后,改善现有的多媒体播放器,功能更加强大,操作更加简单,为用户提供一个更好的多媒体享受环境2.3条件,假定和限制建议软件寿命:5年。
多媒体播放器的设计毕业设计

毕业设计多媒体播放器的设计摘要本文主要是开发了一款简单的多媒体播放器。
可以播放多种格式的音频、视频文件,该播放器实现了的基本功能包括:音频视频文件的打开、添加到菜单、媒体的播放、音量大小的调节、播放时间的拖动、暂停播放、停止以及歌曲信息的查询与添加等。
使之成为一款简易的媒体播放设备,能够完美的播放市面上大多数的音频、视频文件。
在毕业设计中,系统开发平台为Windows XP操作系统,程序设计环境采用Visual C++ 6.0。
在程序设计中,利用了微软公司开发的ActiveX 控件——可视动画控件ActiveMovie,程序通过调试运行,初步实现了设计目标,本程序是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能的,除了基本的播放控制外,还具有多文件自动顺序循环播放、全屏播放、静音等实用功能。
关键字:多媒体;播放器;Active控件目录第一章绪论 (1)1.1 引言 (1)1.2 系统设计的目的和意义 (1)1.3 研究背景 (2)1.4 论文主要研究内容及论文结构安排 (7)第二章开发平台介绍和软件的初步设计 (8)2.1开发平台的介绍 (8)2.2 软件的需求分析和模块设计 (10)2.2.1软件的需求分析 (10)2.2.2软件的模块设计 (11)第三章数据模型分析与设计 (12)3.1 数据需求分析 (12)3.2 数据库概念结构设计 (12)3.3 数据库的逻辑结构设计 (14)3.4 数据库结构的实现 (14)第四章多媒体播放器软件设计 (15)4.1 模块实现函数说明 (15)4.2 主要变量声明 (16)4.3 设计多媒体播放器的界面 (17)4.4 播放器模块设计 (18)4.5 功能模块设计 (19)4.6 歌曲信息模块的设计 (22)第五章程序实现结果 (27)5.1 程序运行流程图 (27)5.2 播放器实现结果演示 (27)第六章总结与展望 (33)参考文献 (34)致谢....................................................................................................................................... 错误!未定义书签。
多媒体播放器系统设计 毕业设计

多媒体播放器系统设计摘要随着科技的进步,软件的发展已经不在满足其单一的需求,而是需要其越来越多元化来满足现在市场的需求。
随着世界的发展,人们的生活水平的提高,我们所追求的事物以不在是仅仅单一话,我们所需要的是满足我们自己生活水平的多元化的空间,在技术日新月异的今天,出现的产物也是多元化,以满足人们的需求。
播放器不再仅仅以播放音乐为唯一,而是集聚音乐,视屏,图片与一体的播放器。
该系统主要以音频播放器模块,视频播放器模块,图片播放器模块三大模块组成,从而实现视频,音乐,图片的播放。
该播放器主要以MFC为技术支持,它是一个微软公司提供的类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在Windows中实现内部处理的类,如书籍库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对象程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版。
本系统界面友好,使用方便,交互性良好。
满足播放器的一切基本要求。
关键词:MFC 播放器音乐视频图片Media PlayerSystem design成都理工大学2011届本科毕业设计(论文)Abstract:With the progress of science and technology, software development has not meet its single demand, but need more multiple to meet the needs of the market now.Along with the development of the world, people's standard of living rise, we are pursuing with not is just a single thing words, all we need is to meet our own life level of diversification in the space of technology are developing rapidly, the product of today, there is diversity, to meet people's needs.Media Player to play music Player not just for the only music, but agglomeration, monitor, pictures and integration of the Player. This system mainly audio player module, video player module, photo player module three modules, video, music, so as to realize the image playback.This player mainly MFC for technical support, it is a Microsoft provides class library, with the form of c + + classes encapsulates Windows API, and contains an application framework, in order to reduce the workload of applications developers. Including class contains a number of Windows handle encapsulation type and many Windows built-in control and component packaging categories. MFC is not just a function simple interface development system, it provides most of the kind used to interface development, connecting a window movements, but it provides a better class of category is associated with a window that kind of action is not an interface class, not realize the control of a window object (e.g. created, destroyed), but some in Windows implement internal processing classes, such as books, such as library management in learning is the most should spend time for news and equipment environment, c + + and MFC learning is the toughest part of a pointer, c + + object-oriented program design, such as the other parts of the data types, and process control are hard, suggest learning data structure c + + edition.This system friendly interface, easy to use, interactivity is good. Meet the basic requirements of the player。
多媒体播放器设计

多媒体播放器设计
一、引言
现今,随着国家的信息化政策的实施,多媒体技术在我国的许多企业
得到了广泛的应用,使得传统的传统的媒体,如电视、报纸和广播,变得
越来越少。
新兴的多媒体技术使得人们能够以更直观、更丰富的方式了解
和接受信息。
然而,面对多媒体的发展,仍然有一些突出的问题需要解决。
为此,设计一款多媒体播放器来解决这些问题是很有必要的。
二、主要功能
1.多媒体播放器首先可以播放各种格式的多媒体文件,包括MP3、WMA、WMV、AVI、RMV、MOV、MP4、FLV等等,并且支持各种分辨率,从
320×240到1920×1080,或更高。
2.多媒体播放器还可以支持多种输出设备,如大屏幕电视、投影仪、
液晶显示屏等,方便用户将多媒体文件分享给大家。
三、硬件要求
1.多媒体播放器的硬件要求非常高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《多媒体技术》课程论文题现专班姓学目:基于MFC的多媒体播放器的设计与实业:级:名:号:指导老师:摘要:本程序是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能的多媒体播放器。
具有打开文件、播放、暂停、全屏、音量调节、静音、快进、快退等基本播放功能。
系统开发平台为 Windows 7操作系统,程序设计环境采用Visual C++ 6.0。
关键字:MFC,ActiveMovie,多媒体1.开发工具及相关知识介绍MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。
vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。
MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。
xx是版本,它封装了mfc内核,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。
一个MFC窗口对象是一个C++ CWnd类(或派生类)的实例,是程序直接创建的。
在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。
而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。
Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。
Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。
ActiveX控件是基于COM的可重用组件,主要用于插入ActiveX控件包容器或Web页,ActiveX在外观上和使用上和普通控件一样,还提供属性页以支持在包容器的设计阶段对ActiveX控件的属性进行可视化设计。
现在多媒体技术正向二个方而发展:一是网络化发展趋势,与宽带网络通信等技术相互结合,使多媒体技术进入科研设计、企业管理、办公自动化、远程教育、远程医疗、检索咨询,文化娱乐、自动测控等领域;二是多媒体终端的部件化、智能化和嵌入化,提高计算机系统本身的多媒体性能,开发智能化家电。
多媒体有三个关键特性:多样性、交互性和集成性。
2.系统的功能说明2.1打开文件按钮单击打开按钮,选定需要播放的文件的路径并打开,则选定的文件将被添加到播放列表中。
2.2播放/暂停文件按钮单击暂停按钮,则播放暂停。
2.3播放进度滑块用户可以通过滑动播放进度滑块进行对播放进程的控制,实现音频视频文件播放的快进和快退。
2.4随机/顺序/单曲/全曲循环选项当用户勾选随机/顺序/单曲/全曲循环时,播放模式会切换到会转变到相应的模式下。
2.5上一曲/下一曲按钮当用户单击该按钮时,播放的文件相应变化。
2.6音量调节滑块用户可以通过对音量调节滑块进行调节从而控制音量的大小。
2.7静音选项选择该选项时将会静音。
2.8停止播放按钮单击该按钮,停止播放.2.9退出程序按钮单击退出程序按钮从播放器中退出。
3.所设计系统实现的各模块介绍3.1 流程图设计3.2 各模块介绍本多媒体播放系统从界面上看分为四个部分:播放界面、播放控制、播放列表和播放模式。
(1)播放界面:可以看到背景图,还可以方便用户调整播放进度、音量大小,也能对音频和视频进行播放和暂停的控制。
(2)播放模式:有顺序播放、循环播放、随机选择三种模式。
用户通过对这三种模式的选择可以控制音频视频的播放顺序。
(3)播放列表:播放列表记录了被用户添加的需要播放的文件,方便用户在添加文件之后可以迅速找到需要播放的文件。
(4)播放控制:主要包括媒体文件的打开、播放进度的调整、暂停、停止、全屏和程序的退出。
4.各模块源程序及主要部分4.1.打开文件void CMediaPlayerDlg::OnOpen(){m_listCtrl.SetFocus();CString str;TCHAR szFilter[] = _T("Mp3File(*.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 fileDlg(TRUE,NULL, NULL,OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT,szFilter,this);CString strFilePath;if(IDOK==fileDlg.DoModal()){strFilePath = fileDlg.GetPathName();strFilePath.MakeUpper();m_player.SetUrl(strFilePath);m_media=static_cast<CWMPMedia>(m_player.newMedia(strFilePath));m_list.appendItem(m_media);m_listCtrl.InsertItem(count,m_media.GetName());m_listCtrl.SetItemText(count,1,_T(m_media.getItemInfo("FileType")));m_listCtrl.SetItemText(count,2,_T(m_media.GetDurationString()));m_listCtrl.SetItemText(count,3,_T(strFilePath));m_listCtrl.SetItemText(count++,4,_T(m_media.getItemInfo("Duration")));POSITION pos;pos = m_listCtrl.GetFirstSelectedItemPosition();IndexInFieldList= m_listCtrl.GetNextSelectedItem(pos);m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);m_player.SetUrl(m_listCtrl.GetItemText(0,3));m_listCtrl.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);}}4.2播放void CMediaPlayerDlg::OnPlay()if(m_list.GetCount()<=0)MessageBox("列表无文件!","Warning",MB_OK);KillTimer(0);m_control.play();if(m_control.GetCurrentPosition()==0)m_control.SetCurrentPosition(0.01);SetTimer(0,20,NULL);}4.3暂停播放void CMediaPlayerDlg::OnPause(){m_control.pause();}4.4停止播放void CMediaPlayerDlg::OnStop(){KillTimer(0);m_control.stop();}4.5全屏void CMediaPlayerDlg::OnFullscreen(){if(!m_player.GetFullScreen()){m_control.pause();AfxMessageBox("请双击退出全屏模式!!");m_player.SetFullScreen(true);m_control.play();}}4.6退出void CMediaPlayerDlg::OnExit(){SendMessage(WM_CLOSE);}void CAboutDlg::OnOK(){//TODO:Add extra validation hereCDialog::OnOK();}4.7添加背景图片CPaintDC dc(this);CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP9);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);}}4.8添加软件图标HCURSOR CMediaPlayerDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}4.9顺序播放功能v oid CMediaPlayerDlg::OnOrder(){m_order=0;}4.10随机播放功能void CMediaPlayerDlg::OnRandom(){m_order=1;}4.11单曲循环功能void CMediaPlayerDlg::OnSinglecircle(){m_order=3;}4.12全曲循环功能void CMediaPlayerDlg::OnAllcircle(){m_order=2;}4.13播放列表void CMediaPlayerDlg::OnPlaylist(){if(flag=!flag){SetWindowPos(NULL,0,0,420,454,SWP_NOMOVE);}else{SetWindowPos(NULL,0,0,720,454,SWP_NOMOVE);}}4.14音量增加void CMediaPlayerDlg::OnAdd(){m_setting.SetVolume(m_setting.GetVolume()+10);m_VOLUME.SetPos(m_setting.GetVolume());}4.15音量减小void CMediaPlayerDlg::OnSub(){int Volume=m_setting.GetVolume();m_setting.SetVolume(Volume=Volume-10);m_VOLUME.SetPos(m_setting.GetVolume());}4.16静音void CMediaPlayerDlg::OnSilence(){long temp;Temp=m_ActiveMovie.GetVolume();if(temp>-4000){m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(-4000);m_ActiveMovie.Run();}else{m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(temp+4000);m_ActiveMovie.Run();}}4.17快进退模块//快进void CMediaPlayerDlg::OnForward(){double t= m_control.GetCurrentPosition();m_control.SetCurrentPosition(t=t+10);}//快退void CMediaPlayerDlg::OnReverse(){double t= m_control.GetCurrentPosition();m_control.SetCurrentPosition(t=t-10);}4.18上一曲、下一曲//上一曲void CMediaPlayerDlg::OnLast(){m_listCtrl.SetFocus();POSITION pos;CString strName;UINT flag1 =LVIS_SELECTED|LVIS_FOCUSED;pos = m_listCtrl.GetFirstSelectedItemPosition();IndexInFieldList= m_listCtrl.GetNextSelectedItem(pos);if(IndexInFieldList==-1){AfxMessageBox("列表内没有被选中项!");return;}if(IndexInFieldList==0){AfxMessageBox("已经到了列表头部!");m_listCtrl.SetItemState(IndexInFieldList,flag1, flag1);return;}m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);m_listCtrl.SetItemState(IndexInFieldList-1,flag1,flag1);strName=m_listCtrl.GetItemText(IndexInFieldList-1,3);KillTimer(0);m_control.stop();m_player.SetUrl(strName);m_control.SetCurrentPosition(0.01);m_control.play();SetTimer(0,20,NULL);}//下一曲void CMediaPlayerDlg::OnNext(){m_listCtrl.SetFocus();POSITION pos;CString strName;UINT flag1 =LVIS_SELECTED|LVIS_FOCUSED;pos = m_listCtrl.GetFirstSelectedItemPosition();IndexInFieldList= m_listCtrl.GetNextSelectedItem(pos);if(IndexInFieldList==-1){AfxMessageBox("列表内没有被选中项!");return;}if(IndexInFieldList==m_listCtrl.GetItemCount()-1){AfxMessageBox("已经到了列表末尾!");m_listCtrl.SetItemState(IndexInFieldList,flag1, flag1);return;}m_listCtrl.SetItemState(IndexInFieldList,~LVIS_SELECTED,LVIS_SELECTED);m_listCtrl.SetItemState(IndexInFieldList+1,flag1, flag1);strName=m_listCtrl.GetItemText(IndexInFieldList+1,3);KillTimer(0);m_control.stop();m_player.SetUrl(strName);m_control.SetCurrentPosition(0.01);m_control.play();SetTimer(0,20,NULL);}5.运行界面5.1版权信息点击“关于”按钮,就可以查看版权信息5.2初始界面5.3添加文件点击“打开文件”按钮可以添加自己喜欢的歌曲或视频。