C++课程设计播放器Word文档下载推荐.docx
- 文档编号:22396378
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:23
- 大小:898.15KB
C++课程设计播放器Word文档下载推荐.docx
《C++课程设计播放器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++课程设计播放器Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
CWMPPlayer4m_player
//windowsmediaplayer的控制对象
目录
第一章前言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
第一章前言
1.1简介说明
这是一款小巧实用的多媒体播放器,容易操作,界面简洁,画面清晰,基本功能齐全。
针对当前多媒体播放软件商业化趋势的加强,制作这样一个播放器,用于供个人娱乐使用。
信息化时代,多媒体技术飞速发展,呈现在人们面前的是更加多姿多彩的世界。
此外,本播放器采用windowsmediaplayer制作而成,运用系统相关控件,支持多种格式的多媒体文件播放,给人们提供了强大的视听感官冲击。
1.2设计目的
我们将主要通过C++语言和MFC技术,运用面向对象的程序设计方法,开发此款多媒体播放器。
争取做到使程序短小精悍,简洁明了;
操作界面优美友好,容易操作;
功能丰富,趣味性强。
现在将我们对项目期望实现的目标一一介绍:
1、可以在任何时候启用该应用程序。
2、可以播放多种格式的音频和视频。
3、可以实现多种播放状态的切换。
4、可以实现快进或快退。
5、可以显示播放时间和曲目总长度。
6、操作界面友好。
7、操作方便,容易上手。
1.3运行规则
(1)打开文件
在运行本播放器的第一步就是首先要在磁盘中选取为其支持的文件,包括常见的音乐和视频格式。
点击“打开文件”后,会弹出一个对话框,要求用户在相应的目录下选择文件,如选择的文件类型为其所支持,播放器会自动播放音乐或视频。
(2)操作规则
添加——在选中文件后程序将会把该文件保存到播放列表,双击列表项可以播放文件;
播放——在打开文件的时候播放器会自动播放选取的音频或视频,此时界面上会显示正在播放以及播放的文件名;
暂停——点击播放器上方的“暂停”按钮,即可暂停正在播放的曲目,此时界面上会显示播放的文件已暂停;
继续——在暂停之后,原来的暂停按钮会变成“继续”,单击会继续播放已暂停的曲目。
此时“继续”按钮将会重新变成“暂停”;
停止——点击此按钮,会中止正在播放的曲目,若要继续,则只能重新开始已选择的曲目;
全屏——点击会全屏播放音频或视频,退出时需要双击界面或按“Esc”键;
隐藏和显示——会隐藏除“显示”外的其他按钮,此时“隐藏”按钮会自动变成“显示”,若要显示,正好相反操作;
退出——此时指退出该播放器,用户在选择此按钮时,会弹出一个对话框要求用户确认退出或放弃退出继续播放。
注意:
本程序未定义快捷键,使用快捷键可能会使程序被强行关闭,请勿使用快捷键
1.4项目任务书
(1)班级:
软件工程1001班
(2)组员:
陈涌澜(组长)、唐一茗、周贤
(3)项目名称:
多媒体播放器
(4)项目分工:
陈涌澜:
前景展望,编写部分程序。
管理整个小组的活动,指导编程,编写部分程序及程序调试。
唐一茗:
资料的收集,资料分析,项目把关、软件的最后测试及编写“托盘菜单(打开文件)”部分程序。
周贤:
资料的收集,资料分析,文档的设计和编写,编写“菜单(播放暂停)”部分程序及程
(5)项目进度:
15周:
前期准备,各类资料的收集整理。
16周:
实现基本功能并完善。
17周:
实现程序附加功能并运行。
18周:
最后测试,最后优化。
第2章系统功能分析
2.1系统总体功能分析
下面是我们的播放器的设计和运行的流程图:
图2-1-1总体功能流程图
2.2系统部分功能实现具体分析
2.2.1打开多媒体文件功能分析
实现函数;
CCZTMediaPlayerDlg:
:
OnOpenfile()
为菜单栏的“文件”弹出菜单下“打开文件”菜单按钮添加对话框类的消息响应函数OnOpenfile。
在该函数下定义一个字符型数组变量szFileFilter[]用于保存可打开文件的扩展名。
然后创建一个通用对话框,用于打开文件。
如果用户选中文件并点击确定按钮,程序将得到该文件的路径,然后调用windowsmediaplayer控件的SetUrl方法,此时将播放该文件。
图2.2.1.1OnOpenfile函数的实现
2.2.2添加文件到播放列表,双双击列表项播放
实现函数;
OnAddmedia()及OnDblclkPlayList
在对话框中添加一个列表控件。
为菜单栏的“播放列表”弹出菜单下“添加”菜单按钮添加对话框类的消息响应函数OnAddmedia,创建通用对话框,在用户选择文件并点击确定时,将程序得到该文件的文件名及路径,分别保存在fileName和file[NumOfMedia+1]变量中,NumOfMedia变量为整型,其作用是将得到的列表中现有的列表项数保存起来。
接着在类向导中创建列表项的左键双击消息响应函数OnDblclkPlayList,此时利用GetSelectionMark方法得到所点击的是第几行,然后从file[]数组中得到该项的地址,用SetUrl方法播放。
图2.2.2.2OnDblclkPlayList函数的实现
2.3程序核心代码
2.3.1播放功能核心代码
voidCCZTMediaPlayerDlg:
OnOpenfile()//打开文件
{
//TODO:
Addyourcommandhandlercodehere
charszFileFilter[]=
"
AllFile(*.*)|*.*|"
"
RMFile(*.rm)|*.rm|"
AVIFile(*.avi)|*.avi|"
Mp3File(*.mp3)|*.mp3|"
MPEGFile(*.mpeg)|*.mpeg|"
MediaFile(*.asf)|*.asf|"
VideoFile(*.dat)|*.dat|"
MPGAFile(*.mpga)|*.mpga|"
WaveFile(*.wav)|*.wav|"
MovieFile(*.mov)|*.mov|"
MidFile(*.mid;
*,rmi)|*.mid;
*.rmi|"
WmaFile(*.wma)|*.wma||"
;
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFileFilter,NULL);
if(dlg.DoModal()==IDOK)
{
CStringfilePathName=dlg.GetPathName();
m_player.SetUrl(filePathName);
//播放
}
}
2.3.2暂停、停止功能核心代码
OnPlay()
m_player.GetControls().play();
//播放文件
OnPause()
m_player.GetControls().pause();
//暂停文件播放
OnStop()
m_player.GetControls().stop();
//停止文件播放
2.3.3全屏功能核心代码
OnFullscreem()//全屏
longPlaystate=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;
OnAbout()
CAboutDlgdlg;
dlg.DoModal();
2.3.4播放列表相关操作代码
OnAddmedia()
CStringfileName=dlg.GetFileTitle();
m_list.InsertItem(1,fileName,0);
NumOfMedia=m_list.GetItemCount();
file[NumOfMedia-1]=dlg.GetPathName();
OnDblclkPlayList(NMHDR*pNMHDR,LRESULT*pResult)
Addyourcontrolnotificationhandlercodehere
CStringstr;
intmark=m_list.GetSelectionMark();
m_player.SetUrl(file[mark]);
*pResult=0;
OnDelall()
m_list.DeleteAllItems();
2.3.5设置对话框伸缩代码
OnButton1()//对话伸缩框
CStringst;
if(GetDlgItemText(IDC_BUTTON1,st),st=="
<
)
{
SetDlgItemText(IDC_BUTTON1,"
>
);
}
staticCRectrectLarge;
staticCRectrectSmall;
if(rectLarge.IsRectNull())
GetWindowRect(&
rectLarge);
CRectpicRect;
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);
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER);
2.3.5系统托盘相关代码
OnTrayMessage(WPARAMwParam,LPARAMlParam)
if(lParam==WM_LBUTTONDOWN)//
ShowWindow(SW_RESTORE);
//左击显示窗口
elseif(lParam==WM_RBUTTONDOWN)//右击弹出菜单
CPointcurPT;
:
GetCursorPos(&
curPT);
//获取点击的位置
CMenu*pSumMenu=m_TrayMenu.GetSubMenu(0);
//指向菜单
pSumMenu->
TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,curPT.x,
curPT.y,AfxGetApp()->
m_pMainWnd,TPM_LEFTALIGN);
//再点击的位置弹出菜单
OnCancel()
Shell_NotifyIcon(NIM_DELETE,&
m_NotifyData);
//退出时注销托盘
CDialog:
OnCancel();
BOOLCCZTMediaPlayerDlg:
OnInitDialog()
......
Addextrainitializationhere
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;
第3章系统测试
3.1程序主界面
当用户运行程序运行时将会运行如下界面:
图3.1.1程序运行主界面
图3.1.2程序帮助界面
3.2打开添加文件
当用户选择打开添加多媒体文件时显示如下界面:
图3.2.1打开添加多媒体文件图
图3.2.2打开添加多媒体文件图
3.3播放多媒体文件
当用户选择多媒体文件且播放选中文件时显示如下界面:
图3.3.1打开音乐文件并播放图示
图3.3.2打开视频文件并播放图
图3.3.3多媒体文件播放时使用暂停功能图
3.4全屏界面显示
当用户选择显示全屏时,显示如下界面:
图3.4.1全屏界面图
3.5隐藏和显示功能
当用户选择将其窗口最小化后将会托盘隐藏在右下角位置,如下界面:
图3.5.1隐藏和显示功能
3.6添加文件到列表框功能
当用户选择添加文件后文件将显示在右边的列表框,如下界面:
图3.6.1添加文件到列表框功能图
第4章结语
经过三个星期的时间,我们小组已经完成了C++面向对象的课程设计。
这次课程设计是与同学共同讨论并利用这学期学到了C++以及MFC知识完成的。
本次课程设计主要是制作一个小巧实用的多媒体播放器。
在课程设计期间虽然遇到过很多的困难,但通过集体的讨论和上网查找信息学习,真正的学会了许多以前不太明白的知识点,并且这一次课程设计也让我们这个小型的三人团队懂得了程序分工和配合的重要性,同时在完成这个课程设计后也让我们对学习计算机更有兴趣。
之所以选择这个课题作为课程设计是因为这次的课程设计是一个可以扩充的程序。
这次课程设计虽只完成了播放、暂停、功能,但是以后在我们这个课程结业后我们依然可以更进一步来完成这个系统,只要不停的来完善这个程序在以后将是一个非常实用的程序。
同时在这一次课程设计中,我们团队中所使用到的知识包括了C语言、C++以及MFC中的知识,同时通过复习以前的书籍,通过网上的学习以及老师的指导使得我们学到了更多的知识。
这一次课程设计让我更加深入的学习了MFC的相关操作知识,在这一次课程设计中曾遇到过一些关于托盘制作、列表框制作以及其他方面的问题,但是通过团队的不懈努力最终得到一一解决,这使我意识到科学的道路上充满了崎岖与坎坷,必须勇往直前,不能轻言放弃。
通过这一次的课程设计也让我在以后的课程设计也让我懂得了利用团队的力量,虽然在这一次课程设计中我也曾非常羡慕一个人一组的同学,认为那样只需要做一个两百多行的小程序就够了,但现在我却并不羡慕,相反,我更觉得团队的重要性,走进企业,一个人的力量可以忽略。
虽然团队合作中有过小争议,但是我相信这些不愉快的回忆可以让我们以后更加懂得如何去适应一个团队!
最后,我非常的感谢这一次和我一起完成课程设计的队员们,虽然我们这个团队只有仅仅三人,但却让我学到了如何去分配任务,如何去解决不兼容的代码。
同时我特别感谢老师对我们这一个课程设计方向的指导。
在大学里面,我将会用学到的知识继续来完善这个程序,将老师提出的其它程序功能完善。
参考文献
[1]谭浩强.C程序设计(第三版).清华大学出版社,2009.7
[2]孙鑫、余安萍.《VC++深入详解》.电子工业出版社,2006.6
[2]郑阿奇.VisualC++实用教程(第三版).电子工业出版社,2007.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 播放