vc++课程设计报告.docx
《vc++课程设计报告.docx》由会员分享,可在线阅读,更多相关《vc++课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
![vc++课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-10/27/e1276717-73b5-4df1-ab3e-82cb9dae89dd/e1276717-73b5-4df1-ab3e-82cb9dae89dd1.gif)
vc++课程设计报告
福建工程学院
VC++课程设计
课题:
音频播放器
班级:
通信1202
学号:
3120210114
姓名:
陈李萍
同组组员:
林志滨林剑花陈李萍
熊建朱炜明周士炜马率杰
指导老师:
黄旭红林挺钊陈健
日期:
2013/11/25—11/29
一、设计目的与要求3
二、准备工作3
三、系统分析及实现步骤3
3.1、系统实现的方法..................................................................................................3
3.2、程序设计的总框图………………………………………………………..........4
3.3、项目的具体设计方案(设计原理与流程图等)…………………………………4
3.4扩展部分(根据实际情况而定,如果没有扩展部分,则不写)9
3.5类声明与核心算法程序代码……………………………………...……………12
四、测试与结论20
五、课程设计总结24
六、参考文献25
七、附录25
一、设计的目的与要求
多媒体技术的发展使得计算机应用范围更加广泛,目前各类多媒体播放软件层出不穷。
试开发一个简易的音频播放器,求如下:
1、菜单式的人机界面。
2、具有打开、播放、停止、暂停、定时播放的功能。
3、可控制音量、左右声道、静音。
4、具有显示音频波形的特效。
二、准备工作
在开始做课程设计项目前应:
1、应回顾或复习C++专业课所学习的内容,及课外编程实例
2、需要一台PC机
3、安装VisualC++6.0集成开发环境软件
4、项目主要用到的函数
OnAdd()
添加功能
StoreList()、ReadList()
播放列表功能
OnClear()
清空播放列表功能
OnPlayOrPause()
播放/暂停功能
SetVolumee、Oninvolume()、Ondevolume()
音量功能
BOOLLineTo()MoveToEx()
波形显示
GetDlgItem()
Getwindowtext()
SetWindowText()
定时播放功能
三、系统分析与项目的实现步骤
3.1、系统实现的方法:
MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFCAppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。
每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。
这些函数,必须通过类定义对象才能使用。
在本次设计中,首先,理清课程设计和编写程序的思路,明确程序中所要用到的函数,并做好了解。
然后,再利用C++类的继承与派生原理来构造所需要的类,编写实现每项功能的详细代码。
利用MFC提供的菜单资源来创建菜单,通过类向导建立类,函数,或者消息响应,来实现播放器的各种功能。
采用不同的Windows提供的坐标系统和对话框资源,并利用设备环境来绘制和更新图形,使播放器的界面更加美观,实现较好的人机交互界面。
画出系统模块功能图:
添加音乐及视频
开始
播放
停止
播放结束
退出
暂停
设计原理:
MP3播放器主要对常用Windows音频格式的文件实现播控制:
播放歌曲、暂停播放、停止播放等;实现音量控制:
静音、声音放大以及声音减小的功能。
此播放器编写的时候,利用的是MFC单文档程序的构成框架,然后再利用Windows提供的资源,运用控件,自己制作对话框和人机交互界面。
在制作界面的同时,也制作各个按钮,并完成各个按钮的消息响应,便完成响应函数,实现了功能。
MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFCAppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。
每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。
这些函数,必须通过类定义对象才能使用。
在本次设计中,首先,理清课程设计和编写程序的思路,明确程序所要用到的函数,并做好了解。
然后,再利用C++类的继承与派生原理来构造所需要的类,编写实现每项功能的详细代码。
利用MFC提供的菜单资源来创建菜单,通过类向导建立类,函数,或者消息响应,来实现播放器的各种功能。
1、人机界面设计
播放器界面设计打开VCC++6.0新建一个工程,选择对话框。
便生成了一个
窗口。
然后打开ResouceView,点开Dialog,插入Dialog,利用控件,绘制各
按钮。
如图所示:
2、添加mediaplayer控件如图所示:
3、各按钮功能的实现
(1)处理“添加文件”按钮单击“添加文件”按钮后,在Onopen()函数中,首先对文件类型进行过滤,调用OpenFiles()函数打开对话框选择一个音频文件,通过InitPath()函数获取文件路径,通过InitPath()函数获取文件名后,调用SaveList()函数在StaticText控件上显示你所选择的歌曲文件名,然后再单击播放按钮,便可以播放歌曲。
1.简单声音录制与播放
vmf库中提供了一组录制声音的函数,通过MCIWndCanRecord函数可以判断系统能否录制声音,通过函数MCIWndRecord可以进行声音录制。
如果要播放录制的声音可以使用MCIWndPlay函数。
界面设计如下:
2.视频播放
运用Windowsmediaplayer控件可以支持播放多种格式的音乐和视频,Windowsmediaplayer控件不是系统默认控件,所以需要向该工程中添加该控件,视频播放展示:
1.类与函数层次介绍
CMP3_1Dlg
Play
SetVolumn
Stop
Load
Pause
图7-1-a类与函数层次关系图
Pause:
暂态正在播放的音乐
Play:
控制音乐播放
Stop:
停止播放音乐
Load:
加载播放的音乐
RetVolumn:
设置音乐播放音量
2.核心代码功能介绍
BOOLCMP3_1Dlg:
:
OnInitDialog()//系统参数初始化函数
{
CDialog:
:
OnInitDialog();
.............
.............
SetWindowPos(NULL,0,0,480,340,SWP_NOMOVE);//界面无相对移动
m_channel.SetRange(0,200);//设置左右声道滑块范围
m_channel.SetPos(100);//设置左右声道滑块初始范围
//TODO:
Addextrainitializationhere
for(inti=0;i<24;i++)//定时器设置时
{
CStringtemp;
temp.Format("%02d",i);
m_hour.AddString(temp);
}
for(intp=0;p<60;p++)//定时器设置分
{
CStringtemp;
temp.Format("%02d",p);
m_minu.AddString(temp);
}
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCMP3_1Dlg:
:
OnOpen()//添加文件到播放列表函数
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charszFileFilter[]="Mp3File(*.mp3)|*.mp3|"
"WmaFile(*.wma)|*.wma|"
"VideoFile(*.dat)|*.dat|"
"WaveFile(*.wav)|*.wav|"
"AVIFile(*.avi)|*.avi|"
"MovieFile(*.mov)|*.mov|"
"MediaFile(*.mmm)|*.mmm|"
"MidFile(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEGFile(*.mpeg)|*.mpeg|"
"FlvFile(*.flv)|*.flv|"
"WMVFile(*.wmv)|*.wmv|"
"AllFile(*.*)|*.*||";//文件类型过滤
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
{
PathName=dlg.GetPathName();
GetDlgItem(IDC_PLAYLIST)->SetWindowText(PathName);
PathName.MakeUpper();
}
}
voidCMP3_1Dlg:
:
OnAdd()//定时器文件添加函数
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charszFileFilter[]="Mp3File(*.mp3)|*.mp3|"
"WmaFile(*.wma)|*.wma|"
"VideoFile(*.dat)|*.dat|"
"WaveFile(*.wav)|*.wav|"
"AVIFile(*.avi)|*.avi|"
"MovieFile(*.mov)|*.mov|"
"MediaFile(*.mmm)|*.mmm|"
"MidFile(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEGFile(*.mpeg)|*.mpeg|"
"FlvFile(*.flv)|*.flv|"
"WMVFile(*.wmv)|*.wmv|"
"AllFile(*.*)|*.*||";//文件类型过滤
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
//CFileDialoglog(TRUE,"文件","*.wav",OFN_HIDEREADONLY,"声音文件(*.wav)|*.wav||",NULL);
if(dlg.DoModal()==IDOK)
{
pathname=dlg.GetPathName();
GetDlgItem(IDC_EDWAVFILE)->SetWindowText(pathname);
pathname.MakeUpper();
}
}
voidCMP3_1Dlg:
:
OnSet()//定时播放歌曲设定函数
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//**********