ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:1.01MB ,
资源ID:3806273      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3806273.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC音乐播放器傻瓜教程.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MFC音乐播放器傻瓜教程.docx

1、MFC音乐播放器傻瓜教程 代码下载地址1、建立工程1、建立一个MFC工程,命名为Tao_Music2、选择为基本对话框3、包含Windows Sockts 因为要用网络功能4、使用静态链接库 方便一会直接生成的exe文件单独可以发布2、搭建界面1、拖入控件:拖入7个用于播放控制的button,一个picture控件,一个控制音量的滑块。一个Group Box用于盛放搜索功能各个控件及Group Box中2个静态文本,2个可编辑文本,一个搜索按钮。最下面的是一个List Control用于显示歌曲的。最终效果如下:2、控件拖入并摆好3、控件属性设置:选中Button1右键选择属性,弹出:将其改为

2、:相同的道理将音乐控制的7个按钮和搜索按钮的Styles和Extended Styles都设置成相同的风格。Button2-8的General属性依次为:【注意大小写】相应的这里picture控件的属性为:音量滑块的属性为:Group Box的属性为:2个静态文本的属性只要改General就行啦:2个文本编辑框也只要改General就行:最后是list control控件的属性:好啦,最终的效果就是这样的:前面这么啰嗦大家千万别弄错啦!接下来就是写代码啦!3、写代码实现功能1、变量绑定:查看-建立类向导-Member Variables将其设置为:【双击对应蓝条即出现设置对话框】最后别忘点确定

3、!2、加入图片资源【首先用格式工厂转换出32X32的24张bmp图片,放入工程文件的res文件中-进入Resource界面-右键Tao_Music resources-insert-弹出的对话框点击导入然后将你的24张bmp图片一个一个导入,注意这里最多每次导入8个,要分批导入!导入后的ID为IDB_BITMAP1-IDB_BITMAP24】3、新建mp3类:【插入-新建类】/mp3.h/音乐播放控制类#include mmsystem.h/必须同时引入#pragma comment(lib,Winmm.lib)class mp3 public: mp3(); virtual mp3(); H

4、WND m_hWnd;/3个变量 DWORD DeviceID; MCI_OPEN_PARMS mciopenparms; void Load(HWND hwnd,CString Strfilepath); DWORD getinformation(DWORD item); void Play(); void Pause(); void resum(); void Stop(); DWORD Setvolumn(DWORD vol);/mp3.cpp#include StdAfx.h#include mp3.h#include Digitalv.h /-mp3:mp3()/-mp3:mp3()

5、/-/加载函数/-void mp3:Load(HWND hwnd,CString Strfilepath) /MessageBox(hwnd,Strfilepath,43,MB_ICONHAND); m_hWnd=hwnd; mciSendCommand(DeviceID,MCI_CLOSE,0,0);/在加载文件前先清空上一次播放的设备 mciopenparms.lpstrElementName=Strfilepath;/将音乐文件路径传给设备 DWORD dwReturn; if (dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT

6、|MCI_WAIT,(DWORD)(LPVOID)&mciopenparms) /如果打开文件失败,则将出错信息储存在buffer,并显示出错警告 char buffer256; mciGetErrorString(dwReturn,buffer,256); /MessageBox(hwnd,buffer,HeHe,You Are Wrong!,MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP); /打开文件成功就关联文件到设备 DeviceID=mciopenparms.wDeviceID;/-DWORD mp3:getinformation(DWORD item)

7、MCI_STATUS_PARMS mcistatusparms; mcistatusparms.dwItem=item; mcistatusparms.dwReturn=0; mciSendCommand(DeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms); return mcistatusparms.dwReturn; /-/播放函数/-void mp3:Play() MCI_PLAY_PARMS mciplayparms; mciplayparms.dwCallback=(DWORD)m_hWnd; mciplayparm

8、s.dwFrom=0;/每次播放都是从0开始播放 mciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciplayparms);/-/暂停/-void mp3:Pause() mciSendCommand(DeviceID,MCI_PAUSE,0,0);/-/重播/-void mp3:resum() mciSendCommand(DeviceID,MCI_RESUME,0,0);/-/停止/-void mp3:Stop() mciSendCommand(DeviceID,MCI_STOP,0,0); mci

9、SendCommand(DeviceID,MCI_CLOSE,0,0); /当点击停止按钮时,将所有的信息都清除掉/-/设置音量/-DWORD mp3:Setvolumn(DWORD vol) MCI_DGV_SETAUDIO_PARMS mcisetvolumn; mcisetvolumn.dwCallback=(DWORD)m_hWnd; mcisetvolumn.dwItem=MCI_DGV_SETAUDIO_VOLUME; mcisetvolumn.dwValue=vol; mciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VA

10、LUE|MCI_DGV_SETAUDIO_ITEM,(DWORD)(LPVOID)&mcisetvolumn); / return mcisetvolumn.dwValue; return 0;4、修改Tao_MusicDlg.h在CTao_MusicDlg类里加入下面函数和变量public: void Show(int cnt); void addsong(TCHAR * name); void suiji(); void pre(); void next(); void drawpic(int nTimerID); BOOL AnalyseLrc(TCHAR* LrcFile);/歌词解析

11、函数 BOOL DownLoad(TCHAR* Url, TCHAR* SaveName);/下载资源函数 bool down(TCHAR* song,TCHAR* songer,TCHAR* getstr);/下载XML资源函数public: int hour,minute,second; CString cursong; int showstr; int donghuakind;/动画种类初始化时给一个随机数,选择显示的动画种类 CImageList m_imList;typedef struct _LRC_INFO/定义歌词结构体 int Time; TCHAR Lyric256; LR

12、C_INFO; LRC_INFO LrcInfo500;5、修改Tao_Music.cpp在include下面再引入下面几个文件和库:#include mp3.h#include mmsystem.h#include digitalv.h#include #include #pragma comment(lib,Winmm.lib)#pragma comment(lib,wininet.lib) #pragma comment(lib, shlwapi.lib)紧接着在全局声明一个mp3型的全局变量:mp3 Mp3;转到OnInitDialog()函数处在return 前加入如下代码:/ TO

13、DO: Add extra initialization hereSetWindowText(MP3播放器);/标题m_slider.SetRange(0,1000); /移动范围m_slider.SetPos(500);/滑块指针的初始位置GetDlgItem(IDC_open)-EnableWindow(FALSE);GetDlgItem(IDC_pause)-EnableWindow(FALSE); GetDlgItem(IDC_del)-EnableWindow(FALSE);/List 初始化-/ 设置CListCtrl控件扩展风格:整行选中子项目图标列表|LVS_EX_GRIDLI

14、NESDWORD dwStyle; dwStyle =m_StoreItems.GetExtendedStyle(); dwStyle = dwStyle|LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES ;m_StoreItems.SetExtendedStyle(dwStyle); / 载入32*32像素 24位真彩(ILC_COLOR24)图片m_imList.Create(32,32,ILC_COLOR24,10,20); / 创建图像序列CImageList对象/ 设置CImageList图像列表与CListCtrl控件关联 LVSIL_SMALL小

15、图标列表m_StoreItems.SetImageList(&m_imList,LVSIL_SMALL);/ 向列表视图控件InsertColumn插入3列数据 CRect mRect;m_StoreItems.GetWindowRect(&mRect); / 获取控件矩形区域int length = mRect.Width()-3;m_StoreItems.InsertColumn(0, _T(图片), LVCFMT_CENTER,40, -1);m_StoreItems.InsertColumn(1, _T(信息), LVCFMT_LEFT, length-60, -1);/-curson

16、g=;showstr=0;donghuakind=rand()%4;/ TODO: Add extra initialization here在文件最后依次添加如下函数:/-/显示函数/显示cnt=0为open/1为delete/2为stop/3为timer/-void CTao_MusicDlg:Show(int cnt) CClientDC dc(this); CString mtime; TCHAR temp19; DWORD cdf,cdfrom; int showstrlen=18,i; int tposx,tposy,sposx,sposy; tposx=12,tposy=128;

17、 sposx=12,sposy=81; switch(cnt) case 0: hour=0;minute=0;second=0; dc.SetBkColor(RGB(124,252,0);/设置放置计数器区域的外观 dc.SetTextColor(RGB(255,255,203);/设置数字显示的颜色 mtime.Format(%02d:%02d:%02d,hour,minute,second);/显示时间进度 dc.TextOut(tposx,tposy,mtime); for(i=0;ishowstrlen;i+) tempi=cursong(i+showstr)%cursong.Get

18、Length(); tempi=0; showstr=(showstr+1)%cursong.GetLength(); mtime.Format(- );/覆盖上次显示 dc.TextOut(sposx,sposy,mtime); dc.TextOut(sposx,sposy,temp); break; case 1: dc.TextOut(sposx,sposy,); KillTimer(0); KillTimer(1); KillTimer(2); hour=0;minute=0;second=0;/歌曲时间置0 break; case 2: KillTimer(0);/取消计数器的显示

19、KillTimer(1); KillTimer(2); hour=0;minute=0;second=0; dc.SetBkColor(RGB(124,252,0);/设置放置计数器区域的外观 dc.SetTextColor(RGB(255,255,203);/设置数字显示的颜色 mtime.Format(%02d:%02d:%02d,hour,minute,second);/显示时间进度 dc.TextOut(tposx,tposy,mtime); for(i=0;ishowstrlen;i+) tempi=cursong(i+showstr)%cursong.GetLength(); te

20、mpi=0; showstr=(showstr+1)%cursong.GetLength(); mtime.Format(- );/覆盖上次显示 dc.TextOut(sposx,sposy,mtime); dc.TextOut(sposx,sposy,temp); break; case 3: second+; dc.SetBkColor(RGB(124,252,0);/设置放置计数器区域的外观 dc.SetTextColor(RGB(255,255,203);/设置数字显示的颜色 if(second=60)/设置钟表的显示 minute+;second=0; if(minute=60) h

21、our+;minute=0; /mtime.Format(%02d:%02d:%02d,hour,minute,second);/显示时间进度 /dc.TextOut(280,128,mtime); cdf=Mp3.getinformation(MCI_STATUS_LENGTH);/获得当前毫秒值MCI_STATUS_POSITION if(cdfm_hWnd,cursong); Mp3.Play(); hour=0;minute=0;second=0; else if(strtemp.Compare(顺序)=0) next(); else if(strtemp.Compare(随机)=0)

22、 suiji(); cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf);/获取当前播放文件的信息 mtime.Format(%02d:%02d:%02d / %02d:%02d,hour,minute,second,cdf/1000/60,cdf/1000%60); dc.TextOut(tposx,tposy,mtime); for(i=0;iLoadBitmap(rand()%24+IDB_BITMAP1); / 载入位图 m_imList.Add(pBmp,RGB(0,0,0); delete pBmp; / 添加数据 InsertItem向列表中插入主项数据 SetItemText向列表中的子项写入数据 LVITEM lvItem=0; / 列表视图控

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

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