基于MFC多媒体播放器
基于MFC的音乐播放器vc60

1.新建一个基于对话框的player工程,对话框如图:2.各个控件属性如下图:3.在头文件中添加如下:#if !defined(AFX_PLAYERDLG_H__A2A8C582_CC8E_4EED_85A6_7AC126703D36__INCLUDED_) #define AFX_PLAYERDLG_H__A2A8C582_CC8E_4EED_85A6_7AC126703D36__INCLUDED_#if _MSC_VER > 1000#pragma once#endif ." menu item to system menu.m_max=0; ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;(IDS_ABOUTBOX);if (!()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}The framework does this automaticallyFor MFC applications using the document/view model,void CPlayerDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); HCURSOR CPlayerDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}p3)|*.mp3|""wma文件(*.wma)|*.wma|""wav文件(*.wav)|*.wav|";CFileDialogf(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,filefiler);|=512;//能够选取多个曲目//选取内容部份if()==IDOK){int index = ();FileName=(); //获取歌曲路径m_title=(); //获取歌曲名称UpdateData(false);}(FileName); //添加歌曲路径songName[()-1] = ();}/*MCIERROR mciSendCommand(MCIDEVICEID wIDDevice, //设备的ID,在打开设备时不用该参数UINT uMsg, //命令消息DWORD fdwCommand, //命令消息的标志DWORD dwParam //指向包括命令消息参数的结构); //若成功则返回0,不然返回错误码*///播放、暂停void CPlayerDlg::OnButtonPause(){if (i%2 == 1){KillTimer(0);MCI_PLAY_PARMS PlayParms;mciSendCommand (m_count, MCI_PAUSE, 0, (DWORD)(LPVOID) &PlayParms);SetDlgItemText(IDC_ST_Pause,"播放");}else if (i%2 == 0){SetTimer(0,1000,NULL);MCI_PLAY_PARMS PlayParms;mciSendCommand (m_count, MCI_RESUME, 0, (DWORD)(LPVOID) &PlayParms);SetDlgItemText(IDC_ST_Pause,"暂停");}}//删除歌曲void CPlayerDlg::DelSong(){CString str;int index = ();(index,str);stopPlay();(index);deltSong();}//删除void CPlayerDlg::deltSong(){int index = ();if ()>0){if (index == ()-1){index = -1;}(index+1,FileName);(index+1);playSong(FileName);}MessageBox("没有歌曲了啊");}//双击播放void CPlayerDlg::songListDBClk(){CFileDialog f(true);FileName=();int i=();(i,FileName);SetDlgItemText(IDC_PLAYING,songName[i]);SetDlgItemText(IDC_ST_Pause,"暂停");playSong(FileName);}//停止播放void CPlayerDlg::stopPlay(){mciSendCommand(m_count,MCI_CLOSE,0,NULL);m_count=0;m_flag=true;();}//播放音乐void CPlayerDlg::playSong(CString str){FileName=str;hour=0;minute=0;second=0;MCI_OPEN_PARMS mciopenparms;//打开MCI_PLAY_PARMS mciplayparms;//播放stopPlay();=FileName;//播放路径=NULL;//文件类型mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&m ciopenparms);//向MCI设备发送死令消息m_count=;=(DWORD)GetSafeHwnd();cdlen=getinfo(MCI_STATUS_LENGTH); //取得曲目长度int sec = cdlen/1000;int min = sec/60;int sec2 =sec%60;("%02d:%02d:%02d",0,min,sec2);cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECO ND(cdlen));=0;=cdto;mciSendCommand(m_count,MCI_PLAY,MCI_FROM,(DWORD)(LPVOID)& mciplayparms);SetTimer(0,1000,NULL);CClientDC dc(this);(RGB(81,54,166));(RGB(215,249,9));(420,165,allTime);}//下一曲void CPlayerDlg::NextSong(){++i;int index = ();if (index ==( ()-1)){index = -1;}(index + 1,FileName);(index + 1);SetDlgItemText(IDC_PLAYING,songName[index + 1]);SetDlgItemText(IDC_ST_Pause,"暂停");playSong(FileName);}//上一曲void CPlayerDlg::preSong(){++i;int index = ();if (index == 0){index = ();}(index - 1,FileName);(index - 1);SetDlgItemText(IDC_PLAYING,songName[index - 1]);SetDlgItemText(IDC_ST_Pause,"暂停");playSong(FileName);}//设置声音DWORD CPlayerDlg::setvolume(DWORD vol){MCI_DGV_SETAUDIO_PARMS setvolume;//这是设置音量的参数数据结构=NULL;=MCI_DGV_SETAUDIO_VOLUME;//动作是设置音量=vol;//音量值是volmciSendCommand(m_count,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV_SETAUD IO_VALUE,(DWORD)(LPVOID)&setvolume);return 0;}//调节声音void CPlayerDlg::Onsetvoices(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code heresetvolume());*pResult = 0;}void CPlayerDlg::OnTimer(UINT nIDEvent){// CString stime;second++;CClientDC dc(this);(RGB(81,54,166));//设置放置计数器区域的外观(RGB(215,249,9));//设置数字显示的颜色if(second==60)//设置钟表的显示{minute++;second=0;}if(minute==60){hour++;minute=0;}if(hour==24){hour=0;}("%02d:%02d:%02d",hour,minute,second);//显示时间进度(115,165,stime);//播放完后自动播放下一曲if (stime>allTime){stopPlay();NextSong();}CDialog::OnTimer(nIDEvent);}DWORD CPlayerDlg::getinfo(DWORD item){MCI_STATUS_PARMS mcistatusparms; //歌曲格式=(DWORD)GetSafeHwnd(); //待获取的项目=item;=0; //想多媒体设备发送指令,获取当前的状态参数mciSendCommand(m_count,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms);return ;}//快退void CPlayerDlg::OnPrevis(){// TODO: Add your control notification handler code hereMCI_STATUS_PARMS mciStatusParms;= MCI_STATUS_POSITION;mciSendCommand(m_count, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)&mciStatusParms);long dCurrentPosition = ; //取适当前位置的信息MCI_PLAY_PARMS mciPlayParms;//每次快退10秒= dCurrentPosition - (DWORD)(10000);//发送从指定位置开始播放的命令if(second<=0)//设置钟表的显示{minute--;second+=60;}if(minute<=0){hour--;minute+=60;}if(hour==0){hour=24;}mciSendCommand(m_count, MCI_PLAY, MCI_FROM, (DWORD)&mciPlayParms);}//快进void CPlayerDlg::OnNexts(){MCI_STATUS_PARMS mciStatusParms;= MCI_STATUS_POSITION;mciSendCommand(m_count, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)&mciStatusParms);long dCurrentPosition = ; //取适当前位置的信息MCI_PLAY_PARMS mciPlayParms;//每次快进10秒= dCurrentPosition + (DWORD)(10000);//发送从指定位置开始播放的命令second+=10;if(second>=60)//设置钟表的显示{minute++;second-=60;}if(minute>=60){hour++;minute-=60;}if(hour==24){}mciSendCommand(m_count, MCI_PLAY, MCI_FROM, (DWORD)&mciPlayParms); }void CPlayerDlg::Onexit(){// TODO: Add your control notification handler code hereCPlayerDlg::OnCancel();}。
基于MFC与UML的多媒体播放器研究

行 表间 的编辑 管理 ,如 剪切 、移动 、复制 等等 。最 后 ,系统 自动读 取和
记 录 系统 的 当前 状 态 ,系统 每次启 动 时 ,自动读 取 配置 信 息 ,并配 置
播 放器 ,当播 放 器 系统 关 闭 时 ,系统 自动 保存 关 闭 时刻 的系 统配 置
信 息 ,以实现 配置记 录 功能 。各 项功 能具 体描 述如 下 :
经 过 系统需 求分 析 ,最 终 确定 了该 播 放 软件 系统 的 9个 主要 功
文 件进行 划分 与管 理日。因此 ,研 究开 发这样 一 款能够 兼播 放 、浏 览 、 能模 块 ,如 图 2.1所示 :
存储 、管 理于 一体 的播 放器 ,为 当前 研究 热点 之一 。
1 系统功 能需 求分析
多数传 统 多 媒 体播 放 器 的功 能 较 为单 一 、界 面单 调 ,资源 存 储 能力
2 系统 总体 设计
较 弱 。而 功能强 大 、界 面友 好 、数 据安 全 的多媒体 播放 器不 仅 给人们
2.1 系统 总体结 构 图
带 来前 所 未有 的视 觉 冲击 ,并且 能够 根据 不 同 的要求 把 不 同 的媒 体
序号 5:Control控制 区控 制播 放窗 体 的相关播 放 。
序 。
序号 6:信 息一览 表模 块接 收资 源列表 框发 送 的文件 句柄信 息 ,
⑧资 源编 辑 :对资 源列 表 中 的多 媒体 文件 进 行 复制 、粘 贴 、剪 并根 据句 柄信 息显 示此文 件 的全部 信息 。
③ 图 片播 放 :实现 对 图片 文 件 的播 放 功 能 ,包 括 wmv/avi/asf/
序号 1:三 大模块 向资源列 表发 送分类 及操 作消 息 。
VC基于MFC的简单酷狗音乐播放器

Visual C++课程设计题目名称:简单的音乐播放器班级:信息安全1101姓名:曹廷祥学号:1111290103指导教师:阎光伟完成时间:2013.1.18一.题目描述音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。
利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个功能非常简单易于操作的MP3播放器。
要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、音量增减、添加歌曲等功能;实现从本地磁盘加入文件,然后对其进行播放。
本程序是基于MFC对话框的简单程序实现音乐的简单控制。
二.功能分析MFC简单音乐播放器主要对常用Windows音频格式的文件实现播放控制:播放歌曲、暂停播放、停止播放等;实现音量控制:静音、声音放大以及声音减小的功能。
利用MCI基本知识实现相关功能。
MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、像等多媒体设备,而不需要知道它们的内部工作状况。
它所支持的媒体格式包括avi、wav、mp3等等。
音频文件包括多种格式的文件,MP3就是其中的一种。
MP3是一种音频压缩的国际技术标准,它一般需要MP3播放器来读取。
通过该程序可以实现简单的音乐播放。
核心是让音乐文件和音乐播放设备关联。
3.系统结构分析(1)整体结构设计图3-1-a整体结构设计图(2)音乐播放流程图设计图3-2-a音乐播放流程图四.系统模块设计(1)背景图片和背景音乐首先将外部的音频文件资源添加到MFC声音资源中,手工制作背景图片加入到资源位图中。
在OnPaint()函数中添加设置显示代码。
最终使音乐播放器显示背景图片同时播放背景音乐。
(2)添加功能该功能能够在本地磁盘中寻找音乐文件,并将文件加载到程序中,获取音频文件的参数。
同时获取文件存取的路径并获取音频文件名,将音频文件名赋值给编辑框同时刷新显示。
基于mfc的简易windows播放器

学号:20题目基于MFC的Windows播放器学院计算机科学与技术学院专业计算机应用技术班级1004班姓名李俊清指导教师胡多勋2012年6月12日目录摘要.............................................................................................................................. 错误!未定义书签。
1 绪论............................................................................................................................ 错误!未定义书签。
MFC的概况简介 .................................................................................................... 错误!未定义书签。
MFC的特点............................................................................................................. 错误!未定义书签。
2 实验目的.................................................................................................................... 错误!未定义书签。
3实验步骤 ................................................................................................................. 错误!未定义书签。
基于MFC的视频播放器

河南农业大学本科生毕业论文题目基于MFC的视频播放器学院理学院专业班级11级电子信息科学与技术(信息安全专门化)3班学生姓名蔡秀梅指导教师谷小青撰写日期:2015年05月28日基于MFC的视频播放器蔡秀梅摘要本文主要介绍了开发一款简单的视频播放器。
可以播放多种格式的音频、视频文件,它实现的基本功能包括:音频视频文件的打开、添加到菜单、媒体的播放、暂停播放、停止以及歌曲信息的查询、添加与删除、音量大小的调节、播放时间的拖动等。
使之成为一种简易的视频播放设备,能够完美的播放市场上大部分的音频、视频文件。
在本毕业设计中,系统开发平台为Windows7旗舰版OS(操作系统),程序运行环境使用Visual C++ 6.0。
在程序设计中,利用了微软公司开发的ActiveX 控件——可视动画控件Windows Media Player,程序通过调试运行,初步实现了设计目标,本程序是基于MFC集成开发环境,利用Windows Media Player控件实现视频播放的功能的,除了基本的播放控制模块外,还具有多文件的自动顺序循环播放、单曲播放、随机播放等多种实用功能,能够很好地满足当代人的音视觉需求。
关键词: 视频播放器;ActiveX控件;微软基础类Based on the MFC video playerCAI Xiu-meiAbstractThis article is developed a simple video player. It can play video formats of audio, video files. It includes the basic functions include that open the Audio and video files, add to the menu, and media playback, pause, stop and song information such as query, add and delete, adjust the volume size, play time drag and so on. Making it a simple media player device, most audio or video files in the market can be played perfectly by this media player. In this Graduation, The System Development Platform is Windows 7Ultimate. The Programming Environment is Visual C++ 6.0. In the program design, using the ActiveX control Developed by Microsoft. Program by commissioning, initial design goals achieved, the program is based on MFC Integrated Development Environment. Using Windows Media Player control can realize the function of the media player. In addition to the basic playback controls, it also has many other utility functions, such as automatic multi-file loop sequence, single play,random play and so on. Itcan meet the demand of contemporary sound sense of vision very well.Key words : video player ; Active control ; Microsoft Foundation Classes目录1 绪论 (1)1.1 课题背景 (1)1.2论文主要研究内容 (3)1.3论文结构安排 (4)2 相关技术介绍 (5)2.1 MFC (5)2.2 Visual C++6.0 (5)2.3 ActiveX控件 (5)3视频播放器的总体设计 (7)3.1 数据模型 (7)3.2 软件的模块设计 (7)3.3播放器数据流图 (8)4基于MFC的视频播放器的实现 (10)4.1多媒体播放器的界面设计 (10)4.2 视频播放器的播放控制功能的设计与实现 (10)4.2.1 播放列表 (10)4.2.2 添加文件 (11)4.2.3 保存列表 (12)4.2.4 播放文件 (13)4.2.5 删除当前和清空列表 (14)4.2.6 播放方式(随机播放、顺序播放、单曲播放) (14)4.2.7 退出程序 (15)5 结论 (17)参考文献 (18)附录 (19)致谢 (29)1 绪论1.1 课题背景随着计算机技术的飞速发展,以计算机技术为基础的多媒体技术在生活中扮演重要的角色。
基于mfc音乐播放器的设计与实现(含源文件)

毕业设计(论文)题目音乐播放系统设计专业信息与计算科学年级 2009级1班学号xxxxxxxxxx姓名xxxxx指导教师xx完成时间:目录摘要 (I)Abstract ..........................................................................................................I I 1 前言 (1)1.1软件开发背景及意义 (1)1.2发展现状及趋势 (1)1.3主要研究方法及过程 (2)2 相关技术简介 (2)2.1 VC技术应用的基本现状 (2)2.2 MCI命令接口编程 (2)2.2.1 MCI命令 (3)2.2.2 MCI命令消息接口方式 (4)2.2.3 MCI命令字符串接口方式 (7)3需求分析 (8)3.1功能需求 (8)3.1.1 播放器的基本控制需求 (8)3.1.2功能需求分析 (8)3.2 运行及其它需求分析 (9)3.3 可行性分析 (9)4 软件结构及界面设计 (10)4.1软件结构设计 (10)4.2 GUI界面设计 (10)5详细设计 (11)5.1文件菜单下的详细设计 (11)5.1.1打开文件设计 (11)5.1.2 打开文件夹设计 (13)5.2播放音乐的详细设计 (13)5.3播放列表的详细设计 (14)5.4歌词显示的详细设计 (15)5.5播放器优化的详细设计 (15)6结论 (17)参考文献 (18)致谢 (19)摘要音乐是一种声音符号,表达人的思想感情。
是人们思想的载体之一。
音乐是有目的和内涵的,其中隐含了作者的生活体验,思想情怀。
一款好的pc音乐播放器不仅能够提供好的音乐播放效果,更能够为用户提供方便的操作。
本设计利用C语言和Visual C++ 编辑工具对播放器进行编写。
同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能与一体,性能良好。
基于MFC与UML的多媒体播放器研究
基于MFC与UML的多媒体播放器研究该播放器采用UML技术与面向对象技术研发,包含音频-视频-图片、信息一览表、播放列表、控制区、文件解析等功能模块。
该播放器利用Microsoft MFC 及ActiveX技术进行播放界面、操作界面设计。
该播放软件功能完备、易用、容错性强、界面友好,能够绑定于当前主流操作系统之上。
标签:多媒体播放器;微软基础类库;统一建模语言;ActiveX电脑播放器已经成为居家及工作的必备,它可以带来音乐、影视、图片等多元化的娱乐效果[1]。
目前市场上免费播放器很多,但大多数传统多媒体播放器的功能较为单一、界面单调,资源存储能力较弱。
而功能强大、界面友好、数据安全的多媒体播放器不仅给人们带来前所未有的视觉冲击,并且能够根据不同的要求把不同的媒体文件进行划分与管理[2]。
因此,研究开发这样一款能够兼播放、浏览、存储、管理于一体的播放器,为当前研究热点之一。
1 系统功能需求分析考虑方便用户使用及用户个性化设置等诸多因素。
最终得出该系统主要功能:首先,可以对多媒体文件进行播放、浏览;其次是可以对这些喜欢的文件进行管理,可以建立播放列表,把自己喜欢的文件加入到列表中,以便今后浏览,并且可以对这些的媒体文件进行表间的编辑管理,如剪切、移动、复制等等。
最后,系统自动读取和记录系统的当前状态,系统每次启动时,自动读取配置信息,并配置播放器,当播放器系统关闭时,系统自动保存关闭时刻的系统配置信息,以实现配置记录功能。
各项功能具体描述如下:①音频播放:实现对音频文件的播放功能。
包括mp3/wma等格式。
②视频播放:实现对视频文件的播放功能,包括jpg/png/gif/bmp等格式。
③图片播放:实现对图片文件的播放功能,包括wmv/avi/asf/rmvb等格式。
④媒体文件分类:根据用户的需求,对混合的多媒体文件进行音频、视频、图片的分类显示。
⑤播放控制:实现对媒体播放的控制,播放、暂停、停止、上一个、下一个、编辑、全屏、音量控制、进度控制、进度时间显示等等。
基于MFC的音乐播放器vc6.0
afx_msg void OnNexts();
afx_msg void Onexit();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4.在playerDlg.cpp中的函数如下
// playerDlg.cpp : implementation file
DDX_Control(pDX, m_list, m_list2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPlayerDlg, CDialog)
//{{AFX_MSG_MAP(CPlayerDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPlayerDlg dialog
CPlayerDlg::CPlayerDlg(CWnd* pParent /*=NULL*/)
//
#include "stdafx.h"
#include "player.h"
#include "playerDlg.h"
#pragma comment(lib,"winmm.lib")
#include "mmsystem.h"
#include "Digitalv.h"
基于MFC的MP3播放器
研究生堂下考试答卷2011-2012学年第一学期考试科目面向对象方法(VC++)姓名于芳年级2011级专业电子与通信工程2010 年12 月18 日基于MFC的MP3播放器姓名:于芳学号:30125847569 专业:通信工程摘要:多媒体技术的概念和应用出现于20世纪80年代初期,经过十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题。
本设计就是基于面向对象技术,利用VC++6.0开发出适合多种格式的的多媒体MP3播放器。
该播放器是基于MFC集成开发环境,利用系统的媒体控制接口MCI命令来编程,建立了一个MP3播放器的类CPLAYERDlg,通过调用这个类的函数来实现各种Windows音频格式文件的播放。
它外观简洁,操作简便,支持的播放格式多、系统资源占用少、支持播放列表编辑等功能。
关键词:MP3 MFC 面向对象设计 VC++ MCI一系统设计的基本原理与思路本设计的基本原理就是利用MFC应用程序以及媒体控制接口MCI的基本知识而设计的。
Windows已经提供了一个关于多媒体处理的动态链接库WINMM.DLL,通过调用它所提供的API函数,就可以使用MCI指令进行多媒体方面的操作了。
1.1 MFC简介MFC是Visual C++是核心。
MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC 派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。
每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。
这些函数,必须通过类定义对象才能使用。
基于FMC的播放器
实验1 基于MFC的多媒体播放器的设计与实现一、实验目的:利用MFC在VC++或其它语言环境下设计一个多媒体播放器,进一步熟悉与掌握多媒体编程的基本技术与方法。
二、实验要求:1、制作一个如下图的多媒体播放器界面,并尽量实现全部或绝大部分功能。
图1 多媒体播放器功能要求2、用.mp3、.avi等格式文件进行播放测试,并获取播放效果图。
3、完成ABOUTBOX的版权信息,请认真真实填写本人信息,否则当缺做实验或抄袭别人程序处理。
图2 必须完成的版权个人信息4、完成并测试程序后将源程序文件夹压缩后上传网络课堂,请确保程序的正确性与可执行性,老师通过执行你的程序从而给你计算本次实验成绩。
5、认真完成实验报告,必须包括实验目的,实验工具、设计框图、实验步骤、所完成的主要设计内容与方法、实验分析与总结等内容。
请尽量笔写,其中源代码与效果图可以打印后粘贴到实验报告本上。
实验指导与基本步骤:使用VC++6.0的AppWizard、ClassWizard和其中的各种控件可以方便地建立各种应用程序。
但是想要实现更高级更复杂的功能,就要借助丰富的ActiveX控件资源。
本实验计划使用VC++6.0自带的一个ActiveX控件——ActiveMovieControl Object,来设计多媒体播放器。
此多媒体具有一般的播放功能,能播放:*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能。
1、注册控件:在windows“运行”里写入:regsvr32 msdxm.ocx 单击确定。
2、打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名VedioPlayer,然后建立基于对话框的应用程序。
最后删除“确定”按钮,保留“取消”按钮。
图3图4图5图6图7 MFC AppWizard生成的对话框3、打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“退出”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C/C++课程设计》项目报告目录1 项目简介 (1)1.1 项目名称 (1)1.2 功能概述 (1)1.3 开发人员及职责 (1)2 需求分析 (1)2.1 功能需求 (1)2.2 性能需求 (2)3 系统设计 (3)3.1 代码设计 (3)3.2 流程图 (13)4 系统实现及测试 (17)5 项目总结 (20)5.1 总体总结 (20)5.2 个人总结 (21)1 项目简介1.1 项目名称多媒体播放器1.2 功能概述此款媒体播放器项目具有以下功能:(1)本地设定目录中包含音频文件的浏览和播放(支持mp3格式)。
(2)本地设定目录中包含图片文件的浏览(支持bmp格式)。
(3)本地设定目录中包含视频文件的浏览和播放(支持mp4格式)。
(4)最近播放列表功能,保存最近播放的10个文件,保存最近追加的10个文件。
视频,音频,图片是分开的,都有最近播放列表和最近追加列表。
1.3 开发人员及职责负责视频模块,以及最后的模块整合,报告的编写负责音频模块,报告的编写负责图片模块,报告的编写2 需求分析2.1. 功能需求本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进行查看。
从其目标功能及特点分析,将本软件功能划分如下:(1)视频播放器:可以打开MP4格式的视频文件。
在本地文件夹中将MP4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至视频播放窗口。
在播放窗口里,查看视频时,有“播放”,“暂停”,“停止”功能。
播放中,还有“前进”,“后退”功能,即快进快退功能,以4秒为一个单位,这个单位也可以在代码中进行修改。
在观看视频时,还有“上一曲,下一曲”功能,即查看之前添加在播放列表里的视频项。
同时,也可以选择播放模式“循环,顺序,随机”,该功能也是基于播放列表实现的。
在右边功能键里,还有音量调节,静音功能。
除此以外,还可以进行全屏浏览,按“ESC”退出全屏。
在主页面,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。
这两个列表只按照时间,保存最近的项目,且最多保存10个。
(2)音频播放器可以打开MP3格式的音频。
在本地文件夹中将MP3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至音频播放窗口。
并且,在主窗口,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。
这两个列表只按照时间,保存最近的项目,且最多保存10个。
(此处为该多媒体公共窗口,功能相同,下面的图片浏览器也是一样的。
)在播放窗口里,听取音频时,有“播放”,“暂停”,“停止”功能。
同样也会有“前进,后退”功能,“上一曲,下一曲”功能,播放模式中的“循环,顺序,随机”,这些功能与上面所述的视频播放器相同。
(3)图片浏览器可以打开BMP格式的图片。
主窗口同视频、音频播放器一样,在此不多赘述。
在浏览图片窗口中,会有“上一张,下一张”功能键,可以在“播放列表,最近播放项目,最近追加项目”任何一个列表中循环,可以自由选择。
当图片浏览到所选列表的最后一张时,会自动循环至列表第一张。
(4)在主窗口的中,在列表中已添加文件后,有两种方式可以打开文件。
一是选中想要打开的文件,点击“播放文件”按钮,二是直接双击列表中的文件,便可进入到相应子窗口进行查看。
(5)当单独拿出exe文件运行时,会自动在exe所在文件里创建9个文本文档,分别存放三个模块(视频,音频,图片)的三个列表(播放列表,最近播放项目,最近追加项目)信息。
2.2. 性能需求(1)硬件平台要求由于本软件为单机软件,不需进行大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Windows操作系统的硬件平台,都能够使用本软件。
(2)软件开发环境1. OS:Microsoft Windows XP SP22. Complier:Visual C++ 6.0 , Visual Studio 2005 Team System或更高版本3. MSDN Library3 系统设计3.1.代码设计(1)音频、视频模块1.创建播放器对话框右击Dialog,点击插入,在弹出的对话框中点击Dialog,再点击新建。
双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。
右击,建立类向导,此时弹出Adding a class对话框,点击ok,输入name为player,点击确定后退出。
再在对话框中右击,选择插入ActiveX控件,选择WindowsMedia Player,之后在对话框中可以看到一个视频控件。
右击,选择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。
再次右击视频控件,选择建立类向导。
点击Member Variables,选择视频控件的ID(默认为ID_OCX1), 点击Add Variables。
此时会弹出一个对话框。
点击确定后,弹出Comfirm Class对话框后,点击OK。
此时可以看到建立了很多个类。
之后为添加成员变量。
Name为m_play,Category为Control,Variable Type为CWMPPlayer4.点击确定之后可以看到下面的效果。
2.控件与函数声明全局变量CString playname,用于记录播放地址;int ntype用于记录播放的类型;int num1,num2,num1用于记录播放的地址在播放列表中的位置,num2用于记录播放列表中总的播放地址。
构建成员函数void player::Onplay(CString pname,int n,int m,int t){playname=pname; num1=n;num2=m;ntype=t;}将前台所选择播放的信息通过函数传递给播放器对话框中在对话框中放上以下几个控件。
控件ID 标题控件ID 标题Push Button ID_bofang 播放PushButtonID_zanting 暂停Push Button ID_tingzhi 停止PushButtonID_qianjing 前进Push Button ID_houtui 后退PushButtonID_shangyiqu上一曲控件排列如下并建立如下三个变量添加全局变量int hour,minute,second;右击对话框,建立类向导,在Messages中选择WM_INITDIALOG,点击ADD Function,再点击Edit Code在BOOL player::OnInitDialog()函数中写入hour=0;minute=0;second=0;UpdateData(true);m_time.Format("%d:%d:%d",hour,minute,second);UpdateData(false);让时间进度一开始为0;同样的方法添加成员函数void player::OnTimer(UINT nIDEvent)让时间进度能随着播放的音视频的进度而走。
添加成员函数void player::OnDestroy(){KillTimer(0);CDialog::OnDestroy();// TODO: Add your message handler code here}在退出播放器对话框时,让计数器停止。
添加全局变量BOOL qian=false;若qian为true时,表示点击了前进或后退,此时点击播放时,继续播放。
双击播放,点击确定,添加以下成员函数void player::Onbofang(){ if(!qian){m_play.SetUrl(playname);KillTimer(0);hour=minute=second=0;UpdateData(true);m_time.Format("%d:%d:%d",hour,minute,second);UpdateData(false);SetTimer(0,500,NULL);}else{m_play.GetControls().play();qian=false;}}点击播放时,也开始启动计时器同理,前进的成员函数void player::Onqianjing()后退的成员函数void player::Onhoutui()停止得成员函数void player::Ontingzhi()停止时,时间进度变为0,同时计数器停止。
暂停的成员函数void player::Onzanting(){ CString strtemp;GetDlgItemText(ID_zanting,strtemp);if (pare("暂停")==0){m_play.GetControls().pause();SetDlgItemText(ID_zanting,"继续");KillTimer(0);}if (pare("继续")==0){m_play.GetControls().play();SetDlgItemText(ID_zanting,"暂停");SetTimer(0,500,NULL);}}点击暂停时,显示继续,此时计数器停止。
当点击继续时,计数器又开始运行,同时显示出暂停。
定义成员变量int shape=2;默认值为2,表示默认顺序播放。
在循环,顺序,随机播放函数中,分别将shape赋值为1,2,3;创建成员函数void player::shunxubofang(){CStdioFile *fsp;if(ntype==3){fsp=new CStdioFile(".\\list.txt",CFile::modeRead);}else if(ntype==1){fsp=new CStdioFile(".\\list1.txt",CFile::modeRead);}else if(ntype==4){fsp=new CStdioFile(".\\list21.txt",CFile::modeRead);}else if(ntype==5){fsp=new CStdioFile(".\\list22.txt",CFile::modeRead);}else if(ntype==6){fsp=new CStdioFile(".\\list31.txt",CFile::modeRead);}else if(ntype==7){fsp=new CStdioFile(".\\list32.txt",CFile::modeRead);}CString str;if(num1==0){num1=num2;}for(int i=0;i<=num1-1;i++){fsp->ReadString(str);}playname=str;fsp->Close();delete fsp;m_play.SetUrl(playname);num1--;}此函数用于上一曲的顺序播放。