MFC音乐播放器(实验报告)_第1页
MFC音乐播放器(实验报告)_第2页
MFC音乐播放器(实验报告)_第3页
MFC音乐播放器(实验报告)_第4页
MFC音乐播放器(实验报告)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上音乐播放器大型实验报告 一、实验目的 通过动手制作基于VC+的音乐播放器,了解播放器的原理。并通过自己动手,在windows播放器组件的基础上,用自己的算法,去实现自己的界面和自己的播放模式。二、总体设计(1)在visual c+环境下设计出一个音乐播放器的界面:具有打开音乐文件、播放歌曲,、暂停或恢复、停止、调节音量大小的功能;音乐播放器打开文件播放歌曲暂停播放停止播放音量控制(2)修改各个控件的属性,并为其添加消息函数;(3)用媒体控制接口MCI编程为各个消息函数添加代码; (4)对该音乐播放器编译-运行。3、 实验步骤(一):创建MFC应用程序框架: 打开vis

2、ual c+软件,选择“文件”“新建”新建一个应用程序文档MFC AppWizardexe,将工程命名为MFC音乐播放器,选择合适的保存位置,然后“确定”选择基本对话框,完成设置。(二)编辑对话框:在工作区内,设计出一个音乐播放器的界面,添加按钮控件:浏览、播放、暂停、停止,添加一个滑动条控件,一个静态文本,两个编辑框。然后,依次修改各控件的属性: 1)右击静态文本,选择属性,将标题改为音乐名称: 2)右击编辑框,选择属性,将ID改为IDC_filename 3) 右击Button1,选择属性,将ID改为IDC_filechoice,将标题改为浏览3) 右击Button2,选择属性,将ID改为

3、IDC_play,将标题改为播放4) 右击Button3,选择属性,将ID改为IDC_pause,将标题改为暂停5) 右击Button4,选择属性,将ID改为IDC_stop,将标题改为停止6)右击滑块,ID改为IDC_SLIDER单击样式,点P:选择顶端/左侧,选择打勾标记。7) 右击编辑框,将ID改为IDC_vol音乐播放器的界面已经设计完毕,为:(3) 添加代码1) 在头文件处添加#include "Mmsystem.h"#include "Digitalv.h"#pragma comment(lib,"Winmm.lib")2

4、)定义全局变量及成员函数。/定义三个全局变量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_

5、OPEN_ELEMENT|MCI_WAIT,(DWORD)(LPVOID)&mciopenparms)/如果打开文件失败,则将出错信息储存在buffer,并显示出错警告char buffer256;mciGetErrorString(dwReturn,buffer,256);MessageBox(hWnd,buffer,"出错警告!",MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP);DeviceID=mciopenparms.wDeviceID;/打开文件成功就关联文件到设备void play()MCI_PLAY_PARMS mcipla

6、yparms;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(Dev

7、iceID,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;/音量值是volmciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DG

8、V_SETAUDIO_ITEM|MCI_DGV_SETAUDIO_VALUE,(DWORD)(LPVOID)&setvolume);return 0;3) 编辑各个控件的代码A) 双击“浏览”按钮,弹出一个对话框,选择OK,出现代码,添加:char szFileFilter="mp3文件(*.mp3)|*.mp3|" "wma文件(*.wma)|*.wma|""wav文件(*.wav)|*.wav|""所有文件(*.*)|*.*|"CFileDialog dlg(true,NULL,NULL,OFN_HID

9、EREADONLY,szFileFilter);if(dlg.DoModal()=IDOK)CString strFilepath=dlg.GetPathName();CString strFilename=dlg.GetFileName();SetDlgItemText(IDC_filename,strFilename);Load(this->m_hWnd,strFilepath);GetDlgItem(IDC_play)->EnableWindow(true);/文件读取成功时所有按钮变可选的 GetDlgItem(IDC_pause)->EnableWindow(tru

10、e); GetDlgItem(IDC_stop)->EnableWindow(true);B) 双击“播放”按钮,弹出一个对话框,选择OK,出现代码,添加:play();SetDlgItemText(IDC_pause,"暂停");C) 双击“暂停”按钮,弹出一个对话框,选择OK,出现代码,添加:CString strtemp;GetDlgItemText(IDC_pause,strtemp);/获取按钮状态if(strtemp.Compare("暂停")=0)pause();SetDlgItemText(IDC_pause,"恢复&qu

11、ot;);if(strtemp.Compare("恢复")=0)resume();SetDlgItemText(IDC_pause,"暂停");D) 双击“停止”按钮,弹出一个对话框,选择OK,出现代码,添加:stop();SetDlgItemText(IDC_pause,"暂停");GetDlgItem(IDC_play)->EnableWindow(false);/当stop按钮按下时,播放和暂停应该均不可用GetDlgItem(IDC_pause)->EnableWindow(false);E)编辑滑块及编辑框按钮。

12、右击滑块,选择建立类向导,选择Member Variables,选择Add Varriable,在Member variable name:处改为m_slider.Category:处改为Control右击编辑框,操作同滑块,Member variable name:处改为m_int.。Variable type:处改为int右击滑块,选择建立类向导,在Message Maps页面,Object IDs:选择IDC_SLIDER,在Messages:处选择NM_CUSTOMDRAW。添加滑块及编辑框的代码在图示位置处添加m_slider.SetRange(0,1000);/滑块的移动范围010

13、00m_slider.SetPos(500);/滑块指针的初始位置设为500代表初始音量为50GetDlgItem(IDC_play)->EnableWindow(false);/文件没有读取时所有按钮应该是不可选的GetDlgItem(IDC_pause)->EnableWindow(false);GetDlgItem(IDC_stop)->EnableWindow(false);双击滑块按钮,弹出一个对话框,选择OK,添加代码UpdateData(true);m_int=m_slider.GetPos()/10;setvolume(m_slider.GetPos();UpdateData(false);4、 调试运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论