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添加文件到列表框功能图
正在阅读:
C++课程设计-播放器06-05
2019年最新司法行政个人年终工作总结精选工作总结文档12-23
网络部招聘职位描述06-01
十二生肖配对查询鼠与鼠配对03-21
盾构机更换盾尾刷施工作业指导书11-02
二年级(下)数学错题集04-06
材料力学第五章习题选及其解答11-01
混凝土结构设计(下册)钢筋混凝土房屋结构课程教学大纲06-20
会计要素(一)05-10
食品安全事故调查处理办法(征求意见稿)10-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- C++
- 播放器
- 课程
- 设计
- 门户网站管理办法
- 目标必修3地理目标答案
- 2016年度福建省科技创新券
- 在线书籍交易系统的数据库分析与设计0001
- 2021年国旗下的讲话:突发情况下如何应急避险
- 2011年度创先争优活动方案
- 《电工学2-1》期末考试试卷_电工学下B答案
- 画法几何第十三章剖视图
- 学校下学期安全教育防绑架,交通安全,防溺水,防震减灾,禁毒教育的教学方案与总结
- 杯子颜色影响咖啡味道(中英)
- 更改Windows8系统Metro界面背景颜色和花纹
- 一年级唐诗宋词经典50首
- 2021年寒假初二八年级上学期上数学教学工作总结汇总
- 铁路线路维修规则
- 一级建造师市政重点汇总28页
- 文化建设应先于经济发展辩论赛 开篇陈词
- 注塑模具毕业设计说明书
- 塑胶模具验收标准--供参考
- 山南地区七年级上学期生物期中考试试卷
- 第十七章 反比例函数全章小结-