多媒体播放器 课程设计报告doc.docx

上传人:b****5 文档编号:6651442 上传时间:2023-01-08 格式:DOCX 页数:11 大小:157.51KB
下载 相关 举报
多媒体播放器 课程设计报告doc.docx_第1页
第1页 / 共11页
多媒体播放器 课程设计报告doc.docx_第2页
第2页 / 共11页
多媒体播放器 课程设计报告doc.docx_第3页
第3页 / 共11页
多媒体播放器 课程设计报告doc.docx_第4页
第4页 / 共11页
多媒体播放器 课程设计报告doc.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

多媒体播放器 课程设计报告doc.docx

《多媒体播放器 课程设计报告doc.docx》由会员分享,可在线阅读,更多相关《多媒体播放器 课程设计报告doc.docx(11页珍藏版)》请在冰豆网上搜索。

多媒体播放器 课程设计报告doc.docx

多媒体播放器课程设计报告doc

 

(设计标题)

多媒体播放器

 

用户签名:

开发成员:

孟凡林

开发时间:

2010—12-23

 

0引言

现在人们娱乐的方式多种多样,已经有了很明显的变化,以前的户外运动现在已经在锐减,换而之的是网络游戏与网上聊天,而在同时听听音乐看看电影也成为了巨大的需求,所以很多多媒体播放软件出现了,形形色色各种都有,而我也赶下时髦,体验一下编写的过程,现在才发现这并不难,重要的是插件的插入,而其他的功能实现只需调用相应函数就行了!

1工作计划

1.1主要工作阶段划分

12月20—21

搜索相关资料,学习基础知识,大致设计框架

12月22—23

考虑所用到的数据结构,函数及其作用,做较为细致的分析

12月24日

设计开始,仔细设计!

12月26

写报告

(用表格或图表的形式列出你们小组各个阶段的时间进度大致安排)

1.2工作任务分工

阶段名称

任务名称

任务描述

负责人

协助人

1234

全部

编写软件

孟凡林

孟凡林

2需求分析

2.1概述

1)到网上或图书馆查找相关系统函数实现相应的功能;

2)使用MFC构建相应的用户界面

2.2用户分析

1)要求有稳定的性能,可实现要求的功能;

2)拥有较好的界面,很方便人操作!

2.3约束条件

(作为开发人员的,通常你的小组的工作时间和人员是一个明显约束;另外站在用户的角度,他们对你有什么约束要求,请从这两个角度进行陈述。

2.4功能需求

能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量!

2.5用户界面需求

3设计与实现

3.1概述

使用MFC构建相应的用户界面,实现相应的功能----------能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量,然后向其中加入各个函数实现相应的功能!

3.2详细设计

3.1.1类的抽象及设计

1)控件activemovie3类,主要用来播放各种类型的文件,其封装的各种成员函数使其成为MFC设计播放器必不可少的控件类;

2)对话框基类cDlg类,及其派生类:

(a)控件repeatbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时再次播放打开的文件;

(b)控件copenbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时提供资源管理器供用户选择文件;

(c)控件playbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时播放打开的文件;

(d)控件pausebtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时暂停播放打开的文件;

(e)控件lowerbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时减小播放音量;

(f)控件upperbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时增大播放音量

(g)控件stopbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时停止播放打开的文件;

(h)控件fullscreen类,作为播放器打开文件的消息响应媒介,能够做到被点击时全屏播放打开的文件;

至于其他的,当我们使用MFC编程时,会有很多封装的类供我们使用,所以就不一一列举了!

3.3主要程序文件

1)头文件(为类加入相应的标准流,库):

Activemovie3.h-------控件;

stdafx.h-----框架构成;

多媒体.h-----多媒体的应用;

多媒体Dlg.h------对话框;

resourse.h-----为多媒体.rc服务!

2)源文件(完成各种类的定义与实现):

Activemovie3.cpp-------控件;

stdafx.cpp-----框架构成;

多媒体.cpp----多媒体的应用;

多媒体Dlg.cpp------对话框;

多媒体.rc-----运行过的效果!

3.4开发环境以及部署环境要求

1)

Vs2010;

2)

3.5主要源码

1)打开文件

voidCMyDlg:

:

OnOpenButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringstrFilter="Mp3File(*.mp3)|*.mp3|";

strFilter+="MPEGFile(*.mpg;*.mpeg)|*.mpg;*.mpeg|";

strFilter+="WaveFile(*.wav)|*.wav|";

strFilter+="AVIFile(*.avi)|*.avi|";

strFilter+="AllFile(*.*)|*.*|";//过滤适当的文件必须以0区分,以00结束,否则会出现参数不正确

CFileDialogdlgOpen(TRUE,NULL,NULL,OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,strFilter,this);//为CFileDialog定义对象

DWORDMAXFILE=2412;//分配足够空间

dlgOpen.m_ofn.nMaxFile=MAXFILE;//设置buffer的大小

CStringstrFileName;

char*buf=newchar[MAXFILE];//分配空间

dlgOpen.m_ofn.lpstrFile=buf;

dlgOpen.m_ofn.lpstrFile[0]=NULL;//赋值

if(IDOK==dlgOpen.DoModal())

{

POSITIONpos=dlgOpen.GetStartPosition();

while(pos!

=NULL)

{

strFileName=dlgOpen.GetNextPathName(pos);

//获取独立文件名

m_list1.InsertString(m_list1.GetCount(),strFileName);//加至播放列表

}

}

delete[]buf;//释放空间

}

2)播放文件

voidCMyDlg:

:

OnPlayButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ActiveMovie.Run();//播放文件

SetTimer(0,20,NULL);//设置定时器

}

3)暂停播放

voidCMyDlg:

:

OnPauseButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ActiveMovie.Pause();

 

}

4.停止播放

voidCMyDlg:

:

OnStopButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ActiveMovie.Stop();//停止播放文件

KillTimer(0);//关掉定时器

}

5.重复播放

voidCMyDlg:

:

OnReapetButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(!

isRepeat)

{

isRepeat=TRUE;

SetDlgItemText(IDC_STATIC2,"Status:

Repeat");

}

else{

isRepeat=FALSE;

SetDlgItemText(IDC_STATIC2,"Status:

Normal");

}

}

6.增大声音

voidCMyDlg:

:

OnUpperButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

longVolume=m_ActiveMovie.GetVolume();

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(Volume+100);

m_ActiveMovie.Run();

 

}

7.减小声音

voidCMyDlg:

:

OnLowerButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

longVolume=m_ActiveMovie.GetVolume();

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(Volume-100);

m_ActiveMovie.Run();

 

}

8.全屏播放

voidCMyDlg:

:

OnFullButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ActiveMovie.Pause();

m_ActiveMovie.SetFullScreenMode(true);

m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);

m_ActiveMovie.Run();

 

}

9.关闭窗口

voidCMyDlg:

:

OnCloseButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ActiveMovie.CloseWindow();²

}

10.退出

voidCMyDlg:

:

OnClickedExitButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PostQuitMessage(0);//;

}

 

4测试

4.1概述

1)打开文件(从曲库中找出歌曲加入列表中)

2)播放,暂停,停止,全屏显示,停止,重播(activemovie实现功能)

4.2测试环境

1)

2)vs2010

4.3测试计划

1)打开文件

2)播放及各种键的使用

3)多次运行,检查稳定性

4.4测试项目及结果

1)打开文件

2)

5、工作总结

5.1工作成果

工作成果不是很明显,因为我自作自受,霉运连连让我乱了阵脚,最后的一个大悲剧直接把我将死了!

我没有编写出来一个成功的程序,以失败告终!

我完了,Oh,myGod!

5.2过程分析

唉!

因为自己眼光不够敏锐,没有选择正确的题目,一开始选择了邮件收发程序,当框架做好以后,开始实现各种功能了,才发现自己并不明白MAPI是怎么一回事,到处查也不是很会用,协议更没搞清楚,而且也不知道应该调用哪个系统函数来实现附件的添加,并且第三步由于协议问题也没头绪,联想到上学期做了好久也没搞出个好程序的经验,我就果断放弃了,改做文件编辑,结果又是因为搞不清怎么调出资源管理器搞的头皮发麻,最后又是悲剧的放弃了,现在一想都后悔啊!

意志太不坚定了,就那么个小困难就把我给吓到了,唉!

折腾了两天半已经是星期三的下午了,眼看期限快到了,我没办法,急得要命,没办法,这时候想起来老师曾经说过网上的媒体播放器很多,于是就到网上去搜了一个,结果一弄。

唉!

问题又出来了,我的机子里没装那个activemovie控件,又搜了一下,找到插入控件的方法,使用运行命令插入了控件,但还是没有,又一搜,哎呀,真悲剧,2010版中找不到插入那个控件的方法。

怎么办,怎么办?

可急死我了,最后无奈到机房插入了那个控件,一点一点的加入了各个按钮,然后添加上了各种函数,谁知这时桌面突然显示,请输入用户名和密码,咋回事?

唉!

又悲剧了,钱用完了?

Oh,myGod,不是吧?

我还没保存那!

然后,一翻衣兜,哎,没钱,怎么办?

没办法,第二天,再次走入机房,这次聪明了,只弄了个插件,回到宿舍,因为高版本肯定能兼容低版本,所以继续用2010版的完善其它工作,最后大功告成,一运行,不行,参数数目不对。

这时,我们班回来了一个人,说老师在为我们开了一教室2402,于是我下午就去问老师您,结果老师您一下子来了句抄的,一下子把我给弄晕了!

哎呀,老师真厉害呀,一眼就看出来了,但是当我回来以后又运行还是无效的参数数目,

并没有那个错误,还是不行啊!

我彻底无奈了,仔细查找各种可能,但始终解决不了,最后只得放弃,听取命运的宣判,最后竟然还是让我找出来错误在哪,我要崩溃了,不过还是强忍着回到宿舍,继续我的寻错之旅!

唉,加油!

哈哈!

找到了,原来使用VS2010之后再用VC++6.0会出现缺少文件,不能兼容。

而其中有一段

CStringPathName=dlgOpen.GetPathName();

PathName.MakeUpper();

m_ActiveMovie.SetFileName(PathName);

中有非法字符很难运行,所以会出现参数数目不正确!

5.3经验教训及其分析

(1)真是不经历不知道,我现在才发现自己的基础是那么的薄弱,MFC的各种控件的使用方法都不是很熟,尤其是列表框,无论怎么学,使用什么方法,都弄不了,真是愁煞我也。

本来在文件编辑放弃以后,做了多媒体播放器,我突然发现了调出资源管理器并选择的方法,但是因为listbox不太会用,不能使用它打开文件,所以只得放弃,今天一个上午的努力也白费了!

以后一定要极爱按基础的扎实,为以后的编程提供巨大的方便!

(2)以后做事要做好全局的规划,决定好了之后就不要轻易的改变,否则会误了大事,这让我想到了那个挖井的故事,这儿挖一点挖不出水就不挖了,那儿挖不出水也不挖了,最后挖了好多地方,还是没有挖出来一滴水,所以做什么事都是浅尝辄止的话,最后是成不了大事的!

就比如说我这次,做了很多却一个也没做成,最后老师还不满意。

还不如一直做第一个那,起码来说不会去抄啊!

(3)还有,以后千万不能从网上直接拷代码了,或者说一旦复制就不能做丝毫的改动,否则会出现好多错误,只得一顶一点改回去!

(4)通过这次课设,我学会了很多,应该说很熟练的掌握了MFC控件的添加与使用,也对使用MFC的各种控件驾轻就熟了,外也学会了一定的调试技巧,感觉收获颇丰,而遗憾的是自己未能独立的完成一个项目!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1