MFC音乐播放器(实验报告)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音乐播放器大型实验报告
通过动手制作基于VC++的音乐播放器,了解播放器的原理。并通过自己动手,在windows 播放器组件的基础上,用自己的算法,去实现自己的界面和自己的播放模式。
二、总体设计
(1)在visual c++环境下设计出一个音乐播放器的界面:具有打开音乐文件、播放歌曲,、暂停或恢复、停止、调节音量大小的功能;
(2)修改各个控件的属性,并为其添加消息函数; (3)用媒体控制接口MCI 编程为各个消息函数添加代码; (4)对该音乐播放器编译--运行。
音乐播放器
打
开文件
播放歌曲
暂停播放
停止播放
音量控制
(一):创建MFC应用程序框架:
打开visual c++软件,选择“文件”—“新建”新建一个应用程序文档MFC AppWizard[exe],将工程命名为MFC音乐播放器,选择合适的保存位置,然后“确定”选择基本对话框,完成设置。
(二)编辑对话框:
在工作区内,设计出一个音乐播放器的界面,添加按钮控件:浏览、播放、暂停、停止,添加一个滑动条控件,一个静态文本,
两个编辑框。
然后,依次修改各控件的属性:
1)右击静态文本,选择属性,将标题改为音乐名称:
2)右击编辑框,选择属性,将ID改为IDC_filename
3) 右击Button1,选择属性,将ID改为IDC_filechoice,将标题改
为浏览
3)右击Button2,选择属性,将ID改为IDC_play,将标题改为播放4)右击Button3,选择属性,将ID改为IDC_pause,将标题改为暂停
5)右击Button4,选择属性,将ID改为IDC_stop,将标题改为停止6)右击滑块,ID改为IDC_SLIDER
单击样式,点[P]:选择顶端/左侧,选择打勾标记。7)右击编辑框,将ID改为IDC_vol
音乐播放器的界面已经设计完毕,为:
(三)添加代码
1)在头文件处添加
#include"Mmsystem.h"
#include"Digitalv.h"
#pragma comment(lib,"Winmm.lib")
2)定义全局变量及成员函数。
//定义三个全局变量
HWND m_hWnd;
DWORD DeviceID;
MCI_OPEN_PARMS mciopenparms;
void Load(HWND hWnd,CString strFilepath)
{
m_hWnd=hWnd;
mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加载文件前先清空上一次播放的设备mciopenparms.lpstrElementName=strFilepath;//将音乐文件路径传给设备
DWORD dwReturn;
if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT,( DWORD)(LPVOID)&mciopenparms))
{
//如果打开文件失败,则将出错信息储存在buffer,并显示出错警告
char buffer[256];
mciGetErrorString(dwReturn,buffer,256);
MessageBox(hWnd,buffer,"出错警告!",MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP);
}
DeviceID=mciopenparms.wDeviceID;
//打开文件成功就关联文件到设备
}
void play()
{
MCI_PLAY_PARMS mciplayparms;
mciplayparms.dwCallback=(DWORD)m_hWnd;
mciplayparms.dwFrom=0;//每次播放都是从0开始播放
mciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID) &mciplayparms);
}
void pause()
{
mciSendCommand(DeviceID,MCI_PAUSE,0,0);
}
void resume()
{
mciSendCommand(DeviceID,MCI_RESUME,0,0);
}
void stop()
{
mciSendCommand(DeviceID,MCI_STOP,0,0);
mciSendCommand(DeviceID,MCI_CLOSE,0,0);
//当点击停止按钮时,将所有的信息都清除掉
}
DWORD setvolume(DWORD vol)
{
MCI_DGV_SETAUDIO_PARMS setvolume;//这是设置音量的参数数据结构
setvolume.dwCallback=NULL;
setvolume.dwItem=MCI_DGV_SETAUDIO_VOLUME;//动作是设置音量
setvolume.dwValue=vol;//音量值是vol
mciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV _SETAUDIO_V ALUE,(DWORD)(LPVOID)&setvolume);
return 0;
}
3)编辑各个控件的代码
A)双击“浏览”按钮,弹出一个对话框,选择OK,出现代码,添加:
char szFileFilter[]="mp3文件(*.mp3)|*.mp3|"
"wma文件(*.wma)|*.wma|"
"wav文件(*.wav)|*.wav|"
"所有文件(*.*)|*.*|";