设计题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计题目:基于mfc 的多媒体播放器
一、 需求描述
利用VC 6.0作为开发工具,开发一个基于mfc 的多媒体播放器;它是播放音乐的应用程序;它可以实现以下功能:
1.添加歌曲,视频(即打开音乐,视频文件);
2.播放、暂停歌曲播放;
3.可以上一首,下一首选择播放;
随着人们对视听效果的不断提高,多媒体技术已经成为计算机领域发展的重要部分。
它可以实现人们对视听的享受,程序主要是根据编码进行统计,这在以后的程序开发中经常要用到。
对于我们日常的生活学习有很大的作用。
而且,随着编程平台的不断发展,开发多媒体程序不再是一件繁琐、艰难的工作了,VC6.0作为开发工具就可以方便快捷的编写多媒体程序。
Visual C++6.0 是Microsoft 公司在1998年推出的基于Windows 9X 和Windows NT 的优秀集成开发环境。
该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。
Visual C++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual C++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。
本系统就介绍用VC6.0自带的一个ActiveX 控件----Windows Media Player 9,来建立自己的多媒体播放器。
利用Visual C++6.0设计一个可以播放*.avi;*.asf;*.wmv;*.rm;*.rmvb, *.mp3;*.wav;*.cda 等文件的媒体播放器。
二、数据流图
顶层图
打
式
错
误
三、设计
1、系统模块结构图和界面
打开模块:打开目标文件,如音频、视频文件。
关闭模块:关闭播放器。
播放模块:播放音频、视频文件。
暂停模块:暂时停止正在播放的音/视频文件。
界面图:
2.详细设计:
程序流程图:
四、编码:
1. 模块实现函数说明
这些实现模块功能的具体函数是在建立Test 工程时由MFC 建立的一个对话框的类,各个模块的几个重要实现函数描述见下表所示:
2.具体实现过程:
利用类向导给ActiveX 控件----Windows Media Player 9
添加变量CWMPPlayer4 m_myplayer ;添加变量CString filename ;还需要在TestDlg.cpp 中包含三个头文件:#include “wmpplayer4.h ”, #include "wmpcontrols.h",#include "wmpsettings.h"。
1)打开模块:
void CTestDlg::OnOpen() { // TODO: Add your control notification handler code here CFileDialog
FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONL Y|OFN_ALLOWMULTISELECT|OFN_N OCHANGEDIR,
"Video File(*.avi;*.asf;*.wmv;*.rm;*.rmvb)|*.avi;*.asf;*.wmv;*.rm;*.rmvb|Music Files(*.mp3;*.wav;*.cda)|*.mp3;*.wav;*.cda|Mpegvideo
File(*.dat;*.mpg;*.mpeg)|*.dat;*.mpg;*.mpeg;*.mpe|");
if(FileDlg.DoModal()==IDOK)
{
filename=FileDlg.GetPathName();
GetDlgItem(IDC_START)->EnableWindow(true);
}
}
2)关闭模块:
void CTestDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
3)播放模块:
void CTestDlg::OnStart()
{
GetDlgItem(IDC_PAUSE)->EnableWindow(true);
m_myplayer.SetUrl(filename);
}
4)暂停模块:
void CTestDlg::OnPause()
{
// TODO: Add your control notification handler code here
CWMPPlayer4 *m_p=&m_myplayer;
if(pauseflag!=true)
{
pauseflag=true;
m_p->GetControls().pause();
SetDlgItemText(IDC_PAUSE,"继续");
}
else
{
pauseflag=false;
m_p->GetControls().play();
SetDlgItemText(IDC_PAUSE,"暂停");
}
}
五、测试和调试。