C++课程设计-播放器

更新时间:2023-06-05 22:18:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++课程设计-播放器

计算机科学与技术学院 C++面向对象课程设计

题 目 多媒体播放器制作 学 院 计算机科学与技术 班 级 软件工程1001班 指 导 教 师 xx 老师 姓 名

2011年6 月24日

摘要

当前多媒体技术飞速发展,日新月异,呈现在人们面前的是更加多姿多彩的世界。多媒体技术给人们提供了强大的视听感受,主要以声音、视频、图片等为主。近年来音乐和电影的发展和普及尤为突出,现已成为多媒体的“代言人”。

随之而来的是越来越多的应用软件供人们选择来播放特定的音乐和视频,像音乐播放器中大家最为熟悉的“酷狗”、“千千静听”等,视频播放器中大家最为熟悉的莫过于“暴风影音”和“快播”了,他们不仅功能强大,可以支持多种格

C++课程设计-播放器

式的视频和音乐,而且容易操作,易为广大影音爱好者接受和使用。他们的操作界面非常友好,而且大多可根据用户自己的爱好进行设置,深受消费者的喜爱。

于是,我们小组选择了制作一个简单的音乐视频播放器,由于目前我们的能力还十分有限,只能做出简单的小程序,但我们相信,这可以激发我们的兴趣,为以后的学习和进步打下基础。

我们的音乐视频播放器可以播放Mp3,Wma,Midi等格式的音乐文件和Rmvb,Rm,Avi等格式的视频文件。

主要有“打开文件”,“播放”,“暂停”,“继续”,“停止”,“全屏”等功能,在播放的时候可以显示当前播放的曲目,并且可以显示当前的状态。

关键词:多媒体;视听;应用软件。

主要变量及对象

int NumOfMedia

CString file[255]

NOTIFYICONDATA m_NotifyData

//用于保存列表中文件的路径

//已添加到列表的文件数

//结构体,传递托盘区域消息的信息

C++课程设计-播放器

CMenu m_TrayMenu

BOOL m_flag BOOL m_Flag

BOOL m_selected

CListCtrl m_list

CWMPPlayer4 m_player

//列表控件控制对象

//判断复选的标志变量

//判断全屏标志变量

//定义托盘对象

//windows media player的控制对象

C++课程设计-播放器

目 录

第一章 前 言 ··········································································· 1

1.1 简介说明 .......................................................................................................................... 1

1.2 设计目的 .......................................................................................................................... 1 1.3 运行规则 .......................................................................................................................... 1 1.4 项目任务书....................................................................................................................... 2

第2章 系统功能分析 ····························································· 4

2.1 系统总体功能分析......................................................................................................... 4

2.2 系统部分功能实现具体分析......................................................................................... 5

2.2.1打开多媒体文件功能分析 ...................................................................................... 5 2.2.2 添加文件到播放列表,双双击列表项播放 ....................................................... 6 2.3 程序核心代码................................................................................................................... 7

2.3.1播放功能核心代码 .................................................................................................. 7 2.3.2暂停、停止功能核心代码 ...................................................................................... 7 2.3.3全屏功能核心代码 .................................................................................................. 8 2.3.4播放列表相关操作代码 .......................................................................................... 9 2.3.5 设置对话框伸缩代码 ........................................................................................... 10 2.3.5 系统托盘相关代码 ............................................................................................. 11

第3章 系统测试 ································································· 13

3.1 程序主界面..................................................................................................................... 13 3.2打开添加文件.................................................................................................................. 14 3.3播放多媒体文件.............................................................................................................. 15 3.4全屏界面显示.................................................................................................................. 16 3.5隐藏和显示功能.............................................................................................................. 17 3.6 添加文件到列表框功能................................................................................................. 17

第4章 结语 ··········································································· 18 参考文献 ················································································· 19

C++课程设计-播放器

第一章 前 言

1.1 简介说明

这是一款小巧实用的多媒体播放器,容易操作,界面简洁,画面清晰,基本功能齐全。针对当前多媒体播放软件商业化趋势的加强,制作这样一个播放器,用于供个人娱乐使用。信息化时代,多媒体技术飞速发展,呈现在人们面前的是更加多姿多彩的世界。此外,本播放器采用windows media player制作而成,运用系统相关控件,支持多种格式的多媒体文件播放,给人们提供了强大的视听感官冲击。

1.2 设计目的

我们将主要通过C++语言和MFC技术,运用面向对象的程序设计方法,开发此款多媒体播放器。争取做到使程序短小精悍,简洁明了;操作界面优美友好,容易操作;功能丰富,趣味性强。现在将我们对项目期望实现的目标一一介绍:

1、 2、 3、 4、 5、 6、 7、

可以在任何时候启用该应用程序。 可以播放多种格式的音频和视频。 可以实现多种播放状态的切换。 可以实现快进或快退。

可以显示播放时间和曲目总长度。 操作界面友好。 操作方便,容易上手。

1.3 运行规则

(1)打开文件

在运行本播放器的第一步就是首先要在磁盘中选取为其支持的文件,包括常见的音乐和视频格式。点击“打开文件”后,会弹出一个对话框,要求用户在相

C++课程设计-播放器

应的目录下选择文件,如选择的文件类型为其所支持,播放器会自动播放音乐或视频。 (2)操作规则

添加——在选中文件后程序将会把该文件保存到播放列表,双击列表项可以播放文件;

播放——在打开文件的时候播放器会自动播放选取的音频或视频,此时界面上会显示正在播放以及播放的文件名;

暂停——点击播放器上方的“暂停”按钮,即可暂停正在播放的曲目,此时界面上会显示播放的文件已暂停;

继续——在暂停之后,原来的暂停按钮会变成“继续”,单击会继续播放已暂停的曲目。此时“继续”按钮将会重新变成“暂停”;

停止——点击此按钮,会中止正在播放的曲目,若要继续,则只能重新开始已选择的曲目;

全屏——点击会全屏播放音频或视频,退出时需要双击界面或按“Esc”键; 隐藏和显示——会隐藏除“显示”外的其他按钮,此时“隐藏”按钮会自动变成“显示”,若要显示,正好相反操作;

退出——此时指退出该播放器,用户在选择此按钮时,会弹出一个对话框要求用户确认退出或放弃退出继续播放。

注意:本程序未定义快捷键,使用快捷键可能会使程序被强行关闭,请勿使用快捷键

1.4 项目任务书

(1)班级:软件工程1001班

(2)组员:陈涌澜(组长)、唐一茗、周贤 (3)项目名称:多媒体播放器

C++课程设计-播放器

(4)项目分工:

陈涌澜:前景展望,编写部分程序。管理整个小组的活动,指导编程,编

写部分程序及程序调试。

唐一茗:资料的收集,资料分析,项目把关、软件的最后测试及编写“托

盘 菜单(打开文件)”部分程序。

周 贤:资料的收集,资料分析,文档的设计和编写,编写“菜单(播放 暂

停)”部分程序及程

(5)项目进度:

15周:前期准备,各类资料的收集整理。 16周:实现基本功能并完善。 17周:实现程序附加功能并运行。 18周:最后测试,最后优化。

C++课程设计-播放器

第2章 系统功能分析

2.1 系统总体功能分析

下面是我们的播放器的设计和运行的流程图:

图2-1-1总体功能流程图

C++课程设计-播放器

2.2 系统部分功能实现具体分析

2.2.1打开多媒体文件功能分析

实现函数 ;CCZTMediaPlayerDlg::OnOpenfile()

为菜单栏的“文件”弹出菜单下“打开文件”菜单按钮添加对话框类的消息响应函数OnOpenfile。在该函数下定义一个字符型数组变量szFileFilter[]用于保存可打开文件的扩展名。然后创建一个通用对话框,用于打开文件。如果用户选中文件并点击确定按钮,程序将得到该文件的路径,然后调用windows media player控件的SetUrl方法,此时将播放该文件。

图2.2.1.1 OnOpenfile 函数的实现

C++课程设计-播放器

2.2.2 添加文件到播放列表,双双击列表项播放

实现函数; OnAddmedia()及OnDblclkPlayList

在对话框中添加一个列表控件。为菜单栏的“播放列表”弹出菜单下“添加”菜单按钮添加对话框类的消息响应函数OnAddmedia,创建通用对话框,在用户选择文件并点击确定时,将程序得到该文件的文件名及路径,分别保存在fileName和file[NumOfMedia+1]变量中,NumOfMedia变量为整型,其作用是将得到的列表中现有的列表项数保存起来。接着在类向导中创建列表项的左键双击消息响应函数OnDblclkPlayList,此时利用GetSelectionMark方法得到所点击的是第几行,然后从file[]数组中得到该项的地址,用SetUrl方法播放。

图2.2.2.2 OnDblclkPlayList函数的实现

C++课程设计-播放器

2.3 程序核心代码

2.3.1播放功能核心代码

void CCZTMediaPlayerDlg::OnOpenfile() //打开文件 {

// TODO: Add your command handler code here char szFileFilter[]= "All File(*.*)|*.*|" "RM File(*.rm)|*.rm|" "AVI File(*.avi)|*.avi|" "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma||"; CFileDialog

dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFileFilter,NULL);

if(dlg.DoModal()==IDOK) { CString filePathName=dlg.GetPathName(); m_player.SetUrl(filePathName);//播放 } }

2.3.2暂停、停止功能核心代码

void CCZTMediaPlayerDlg::OnPlay() {

// TODO: Add your command handler code here m_player.GetControls().play();//播放文件 }

C++课程设计-播放器

void CCZTMediaPlayerDlg::OnPause() {

// TODO: Add your command handler code here m_player.GetControls().pause();//暂停文件播放 }

void CCZTMediaPlayerDlg::OnStop() {

// TODO: Add your command handler code here m_player.GetControls().stop();//停止文件播放 }

2.3.3全屏功能核心代码

void CCZTMediaPlayerDlg::OnFullscreem() //全屏 {

// TODO: Add your command handler code here long Playstate=m_player.GetPlayState(); if(!Playstate) { MessageBox("请先加载视频!!!",NULL,MB_OK); } else { if(m_flag) { //GetWindowRect(&rc_OLdWnd); m_player.SetFullScreen(TRUE); m_flag = true; SetFocus(); } else { m_player.SetFullScreen(FALSE); m_flag = false; SetFocus(); } } }

void CCZTMediaPlayerDlg::OnAbout()

C++课程设计-播放器

{ }

// TODO: Add your command handler code here CAboutDlg dlg; dlg.DoModal();

2.3.4播放列表相关操作代码

void CCZTMediaPlayerDlg::OnAddmedia() {

// TODO: Add your command handler code here char szFileFilter[]= "All File(*.*)|*.*|" "RM File(*.rm)|*.rm|" "AVI File(*.avi)|*.avi|" "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma||"; CFileDialog

dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFileFilter,NULL);

if(dlg.DoModal()==IDOK) { CString fileName=dlg.GetFileTitle(); m_list.InsertItem(1,fileName,0); NumOfMedia=m_list.GetItemCount(); file[NumOfMedia-1]=dlg.GetPathName(); } }

void CCZTMediaPlayerDlg::OnDblclkPlayList(NMHDR* pNMHDR, LRESULT* pResult) {

// TODO: Add your control notification handler code here CString str;

C++课程设计-播放器

int mark = m_list.GetSelectionMark(); m_player.SetUrl(file[mark]); *pResult = 0; }

void CCZTMediaPlayerDlg::OnDelall() {

// TODO: Add your command handler code here m_list.DeleteAllItems(); }

2.3.5 设置对话框伸缩代码

void CCZTMediaPlayerDlg::OnButton1() //对话伸缩框 {

// TODO: Add your control notification handler code here CString st;

if (GetDlgItemText(IDC_BUTTON1,st),st=="<") {

SetDlgItemText(IDC_BUTTON1,">"); } else {

SetDlgItemText(IDC_BUTTON1,"<"); }

static CRect rectLarge; static CRect rectSmall; if (rectLarge.IsRectNull()) {

GetWindowRect(&rectLarge); CRect picRect;

GetDlgItem(IDC_STATIC)->GetWindowRect(&picRect); rectSmall.left=rectLarge.left; rectSmall.top=rectLarge.top; rectSmall.right=picRect.right;

rectSmall.bottom=rectLarge.bottom; }

if (st=="<") {

SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),SWP_NOMOVE SWP_NOZORDER); }

|

C++课程设计-播放器

else {

SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE SWP_NOZORDER); } }

|

2.3.5 系统托盘相关代码

void CCZTMediaPlayerDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam) {

if (lParam == WM_LBUTTONDOWN)// { ShowWindow(SW_RESTORE);//左击显示窗口 }

else if (lParam == WM_RBUTTONDOWN)//右击弹出菜单 { CPoint curPT; ::GetCursorPos(&curPT);//获取点击的位置 CMenu* pSumMenu = m_TrayMenu.GetSubMenu(0);//指向菜单

pSumMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, curPT.x, curPT.y, AfxGetApp()->m_pMainWnd, TPM_LEFTALIGN);//再点击的位置弹出菜单 } }

void CCZTMediaPlayerDlg::OnCancel() {

Shell_NotifyIcon(NIM_DELETE, &m_NotifyData);//退出时注销托盘 CDialog::OnCancel();}

BOOL CCZTMediaPlayerDlg::OnInitDialog() {

......

// TODO: Add extra initialization here

C++课程设计-播放器

......

m_TrayMenu.LoadMenu(IDR_TRAYMENU);//加载一个菜单资源

m_NotifyData.cbSize = sizeof(NOTIFYICONDATA);

m_NotifyData.hIcon = AfxGetApp()->LoadIcon(IDI_MEDIAPLAYER);//注册一个系统托盘图标

m_NotifyData.hWnd = m_hWnd;

char *szTrayText = "CZTMediaPlayer";

strncpy(m_NotifyData.szTip, szTrayText, strlen(szTrayText)+1); //托盘提示 m_NotifyData.uCallbackMessage = WM_TRARMESSAGE; m_NotifyData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;

...... }

C++课程设计-播放器

第3章 系统测试

3.1 程序主界面

当用户运行程序运行时将会运行如下界面:

图3.1.1

程序运行主界面

图3.1.2程序帮助界面

C++课程设计-播放器

3.2打开添加文件

当用户选择打开添加多媒体文件时显示如下界面:

图3.2.1打开添加多媒体文件图

图3.2.2打开添加多媒体文件图

C++课程设计-播放器

3.3播放多媒体文件

当用户选择多媒体文件且播放选中文件时显示如下界面:

图3.3.1打开音乐文件并播放图示

3.3.2打开视频文件并播放图

C++课程设计-播放器

图3.3.3多媒体文件播放时使用暂停功能图

3.4全屏界面显示

当用户选择显示全屏时,显示如下界面:

图3.4.1全屏界面图

C++课程设计-播放器

3.5隐藏和显示功能

当用户选择将其窗口最小化后将会托盘隐藏在右下角位置,如下界面:

图3.5.1隐藏和显示功能

3.6 添加文件到列表框功能

当用户选择添加文件后文件将显示在右边的列表框,如下界面:

图3.6.1添加文件到列表框功能图

本文来源:https://www.bwwdw.com/article/r241.html

Top