




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 0121210680531课 程 设 计课程名称可视化编程(VC)学 院计算机科学与技术学院专 业软件工程班 级1202姓 名 指导教师 20132014学年 第2学期目录1. 设计题目及要求32. 基本功能描述43. 软件设计模块6 3.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.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。 3.要求能播放多种格式(至少四种或四种以上)的音频视频格式文件。 4.可以实现其它附加功能(不在要求范围之内) 5.界面良好,功能完善二、基本功能描述本次课程设计制作的多媒体播放器是利用Windows系统自带的Windows Media Player控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。还通过更换位图的方式,实现了换皮肤功能。1. 打开文件:通过选择文件类型打开不同类型的文件,如果打开的格式不对,消息框会提醒打开正确的格式的文件。再打开文件前,其他按键不能进行操作。2. 播放文件:开始播放文件。3. 停止播放:停止播放文件。4. 全屏:将播放器变为全屏。5. 快退、快进:实现快退、快进功能。6. 换皮肤:选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。7. 音量调节:可以实现调大,调小音量的功能。三、软件设计模块3.1文件的打开模式 在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。打开文件代码:void CWavePlayDlg:OnOpen() / 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(*.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,_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| 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),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)|*.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 fileDialog ( TRUE,_T(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 File(*.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 fileDialog ( 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 CWavePlayDlg: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;void CWavePlayDlg:OnRadio4() / TODO: Add your control notification handler code herem_MediaType=4;3.2文件的播放模块在.WavePlayDlg.h中添加#includewmpcontrols.h、#includewmpsettings.h文件播放代码:void CWavePlayDlg:OnPlay() / TODO: Add your control notification handler code herem_play.SetUrl(m_filename);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全屏模块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 notification 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: 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 CWavePlayDlg: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 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);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);CBrush* 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.SelectObject(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().SetVolume(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文件换皮肤窗口隐藏五、设计过程中遇到的问题 最先想基于MMcontrol插件来写这个程序,发现这个插件很难实现播放视频,调节音量等功能,便改用了windows media player插件来完成。在编写程序过程中遇到了不少问题,在实现暂停功能时报错,后来查看相关资料才发现没有加上#includewmpcontrols.h、#includewmpsettings.h头文件。在给对话框添加背景后发现文本框没有透明化,通过百度查找相关资料才知道要加上一段代码,同时还可以给文本框里的文字改变颜色。代码如下:HBRUSH CWavePlayDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江台州温岭市交通旅游集团有限公司下属温岭市交通设计院有限公司面向社会招聘1人备考考试题库附答案解析
- 2025内蒙古呼和浩特市玉泉区西菜园办事处社区卫生服务中心招聘1人备考考试题库附答案解析
- 农民专业合作社蔬菜种植技术推广协议
- 企业用工合同模板及注意事项
- 医院装修项目合同模板及注意事项
- 同学当班委650字(9篇)
- 致小松鼠一封信300字(13篇)
- 2025年国际组织与全球治理专业题库- 联合国在冲突调解中的经验
- 2025年社会学专业题库- 社会学理论在健康与疾病研究中的应用
- 2025年商务经济学专业题库- 商务经济学在企业市场定位中的应用
- 教学资料管理制度
- 2025年清远市公安局清城分局招聘警务辅助人员考试试题(含答案)
- 肯德基危机管理手册
- 休克患者急救
- 2025年工行客户经理测试题及答案
- 2025年健康云考试题库
- 2025年高考英语真题完全解读(全国一卷)(真题解读)
- 2025年广东省中考英语试题卷(含标准答案)
- 2025至2030中国组网专线行业市场发展现状及发展趋势与投资前景预测报告
- 新解读《城镇供水管网运行安全风险评估规范 T-CAS 737-2023》
- 职业妆容设计课件
评论
0/150
提交评论