版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学 号:课 程 设 计课程名称可视化编程(VC)学 院计算机科学与技术学院专 业软件工程班 级1202姓 名指导教师20132014学年 第2学期目录1. 设计题目及要求32. 基本功能描述43. 软件设计模块63.1文件的打开模块.6 3.2文件的播放模块 9 3.3文件的停止模块.9 3.4全屏模块.9 3.5快进、快退模块.9 3.6换皮肤模块10 3.7音量调节模块12 3.8窗口隐藏模块12 3.9文件暂停模块124.运行结果.135设计过程中遇到的问题和感想156参考文献16一、设计题目及要求1.1设计题目基于MFC的多媒体播放器系统1.2题目要求1.制作一个具有自己设计风格的媒体
2、播放器。 2.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。 3.要求能播放多种格式(至少四种或四种以上)的音频视频格式文件。 4.可以实现其它附加功能(不在要求范围之内) 5.界面良好,功能完善二、基本功能描述本次课程设计制作的多媒体播放器是利用Windows系统自带的Windows Media Player控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。还通过更换位图的方式,实现了换皮肤功能。1. 打开文件:通过选择文件类型打开不同类型的文件,如
3、果打开的格式不对,消息框会提醒打开正确的格式的文件。再打开文件前,其他按键不能进行操作。2. 播放文件:开始播放文件。3. 停止播放:停止播放文件。4. 全屏:将播放器变为全屏。5. 快退、快进:实现快退、快进功能。6. 换皮肤:选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。7. 音量调节:可以实现调大,调小音量的功能。三、软件设计模块3.1文件的打开模式 在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。打开文件代码:void CWavePlayDlg:OnOpen()
4、/ TODO: Add your control notification handler code hereCFileDialog OpenDlg(TRUE);switch(this->m_MediaType)case 1:char szFileFilter= "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "MPGA File(*.
5、mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|" "All File(*.*)|*.*|"CFileDialog fileDialog ( TRUE,_T("wav"),NULL,NULL,
6、_T("wav音频文件(*.wav)|*.wav|"); /选择wav模式 if (fileDialog.DoModal() = IDOK) m_filename=fileDialog.GetPathName();break;case 2:char szFileFilter= "Mp3 File(*.mp3)|*.mp3|""MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "
7、;MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|" "All File(*.*)|*.*|"CFileDialog fileDialog ( TRUE,_T("avi"
8、;),NULL,NULL,_T("avi音频文件(*.avi)|*.avi|"); /选择avi模式 if (fileDialog.DoModal() = IDOK) m_filename=fileDialog.GetPathName();break;case 3:char szFileFilter= "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.da
9、t|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|" "All File(*.*)|*.*|"CFileDialog fileDialog ( TRUE,_T(
10、"mid"),NULL,NULL,_T("avi音频文件(*.mid)|*.mid|"); /选择mid模式 if (fileDialog.DoModal() = IDOK) m_filename=fileDialog.GetPathName();break;case 4:char szFileFilter= "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video Fi
11、le(*.dat)|*.dat|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|" "All File(*.*)|*.*|"CFileDialog fileDia
12、log ( TRUE,_T("mp3"),NULL,NULL,_T("mp3音频文件(*.mp3)|*.mp3|"); /选择MP3模式 if (fileDialog.DoModal() = IDOK) m_filename=fileDialog.GetPathName();break;this->m_FileName.SetWindowText(m_filename);this->m_CloseButton.EnableWindow(true);this->m_playbotton.EnableWindow(true);void CW
13、avePlayDlg:OnRadio1() /选择不同类型的文件/ TODO: Add your control notification handler code herem_MediaType=1;void CWavePlayDlg:OnRadio2() / TODO: Add your control notification handler code herem_MediaType=2;void CWavePlayDlg:OnRadio3() / TODO: Add your control notification handler code herem_MediaType=3;voi
14、d CWavePlayDlg:OnRadio4() / TODO: Add your control notification handler code herem_MediaType=4;3.2文件的播放模块在.WavePlayDlg.h中添加#include"wmpcontrols.h"、#include"wmpsettings.h"文件播放代码:void CWavePlayDlg:OnPlay() / TODO: Add your control notification handler code herem_play.SetUrl(m_filen
15、ame);this->m_full.EnableWindow(true);this->m_decvolum.EnableWindow(true);this->m_addvolum.EnableWindow(true);this->m_fast.EnableWindow(true);this->m_slow.EnableWindow(true);3.3文件的停止模块void CWavePlayDlg:OnClose() / TODO: Add your control notification handler code herem_play.close();3.4全
16、屏模块void CWavePlayDlg:Onfullscreen() / TODO: Add your control notification handler code herem_play.SetFullScreen(1);3.5快进、快退模块void CWavePlayDlg:Onfast() 快进/ TODO: Add your control notification handler code herem_play.GetControls().fastForward();void CWavePlayDlg:Onslow() 快退/ TODO: Add your control no
17、tification handler code herem_play.GetControls().fastReverse();3.6换皮肤模块 定义一个int型的全局变量m_change,选择不同的按钮会给m_change赋不同的值,在onpaint函数中根据m_change不同的值来设置不同的背景。换皮肤代码:void CWavePlayDlg:Onshamo() / TODO: Add your control notification handler code herem_change=1;Invalidate();void CWavePlayDlg:Oncaodi() / TODO:
18、Add your control notification handler code herem_change=2;Invalidate();void CWavePlayDlg:Ondengta() / TODO: Add your control notification handler code herem_change=3;Invalidate();void CWavePlayDlg:Onyujinx() / TODO: Add your control notification handler code herem_change=4;Invalidate();void CWavePla
19、yDlg:OnPaint() if(this->m_change=1)/实现换皮肤功能 CPaintDC dc(this);CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2);CBrush brush;brush.CreatePatternBrush(&bitmap);CBrush* pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);else if(this->m_change=2) CPaintDC
20、dc(this);CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP5);CBrush brush;brush.CreatePatternBrush(&bitmap);CBrush* pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);else if(this->m_change=3) CPaintDC dc(this);CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP4);
21、CBrush brush;brush.CreatePatternBrush(&bitmap);CBrush* pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);else if(this->m_change=4) CPaintDC dc(this);CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP6);CBrush brush;brush.CreatePatternBrush(&bitmap);CBrus
22、h* pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObject(pOldBrush);elseCPaintDC dc(this);CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP9);CBrush brush;brush.CreatePatternBrush(&bitmap);CBrush* pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,800,800);dc.SelectObjec
23、t(pOldBrush);3.7音量调节模块void CWavePlayDlg:Ondecvolum() /减小音量/ TODO: Add your control notification handler code herem_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()-10); void CWavePlayDlg:OnAddvolum() /增大音量/ TODO: Add your control notification handler code herem_play.GetSettings().SetVol
24、ume(m_play.GetSettings().GetVolume()+10); 3.8窗口隐藏模块void CWavePlayDlg:OnClose2() / TODO: Add your control notification handler code herem_play.CloseWindow();3.9文件暂停模块void CWavePlayDlg:OnPause() / TODO: Add your control notification handler code herem_play.GetControls().pause();四、运行结果播放.MP3文件播放.avi文件换
25、皮肤窗口隐藏五、设计过程中遇到的问题最先想基于MMcontrol插件来写这个程序,发现这个插件很难实现播放视频,调节音量等功能,便改用了windows media player插件来完成。在编写程序过程中遇到了不少问题,在实现暂停功能时报错,后来查看相关资料才发现没有加上#include"wmpcontrols.h"、#include"wmpsettings.h"头文件。在给对话框添加背景后发现文本框没有透明化,通过百度查找相关资料才知道要加上一段代码,同时还可以给文本框里的文字改变颜色。代码如下:HBRUSH CWavePlayDlg:OnCtlColor(CDC*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 痛风性关节炎全程管理知识
- 吉林四平市双辽市2025-2026学年下学期期末质量验收八年级历史试题-文字版-含答案-
- 3T MR功能成像:开启肝纤维化精准诊断新时代
- 3D打印木塑夹层结构性能剖析及家具设计创新应用研究
- 3-甲基腺嘌呤(3-MA)对肝纤维化预防作用的实验与机制探究
- 220kV变电站主变中性点小电抗接地运行的多维度解析与优化策略
- 2008年联邦·高登家私公司营销计划:挑战与机遇下的战略布局
- 混凝土、模板、钢筋施工方案
- 医疗器械知识考试题及答案
- 医疗廉洁风险点及防控措施
- 不动产继承登记课件
- 亚低温治疗仪的使用及维护
- 矿业融资居间合同标准范本(2025版)
- 非煤矿山职业危害课件
- 2025阿克苏辅警考试真题
- 研发公司安全管理制度
- 生产成本制度管理制度
- 2025-2030工程监理行业市场发展分析及发展前景与投资机会研究报告
- T/CAEPI 62-2023颗粒活性炭吸附-氮气脱附溶剂回收装置技术要求
- 驾考宝典三力测试考试试题及答案
- 委托收款协议合同协议
评论
0/150
提交评论