》目录《
》——————————————————————《
1、建立工程
1、建立一个MFC工程,命名为Tao_Music
2、选择为基本对话框
3、包含Windows Sockts
4、使用静态链接库 [方便一会直接生成的exe文件单独可以发布]
2、 搭建界面
1、 拖入控件:
2、 控件拖入并摆好
3、 控件属性设置:
3、 写代码实现功能
1、变量绑定:
2、加入图片资源
3、新建mp3类:
4、修改Tao_MusicDlg.h
5、修改Tao_Music.cpp
6、功能实现:
7、加一个TImer消息使时间跑起来!
8、给音量控制滑块加消息,使音量控制实现
4、编译运行完工!
》——————————————————————《
1、建立工程
1、建立一个MFC工程,命名为Tao_Music
2、选择为基本对话框
3、包含Windows Sockts
[因为要用网络功能]
4、使用静态链接库 [方便一会直接生成的exe文件单独可以发布]
2、搭建界面
1、拖入控件:
拖入7个用于播放控制的button,一个picture控件,一个控制音量的滑块。一个Group Box用于盛放搜索功能各个控件及Group Box中2个静态文本,2个可编辑文本,一个搜索按钮。最下面的是一个List Control用于显示歌曲的。最终效果如下:
2、控件拖入并摆好
3、控件属性设置:
选中Button1右键选择属性,弹出:
将其改为:
相同的道理将音乐控制的7个按钮和搜索按钮的Styles和Extended Styles都设置成相同的风格。
Button2-8的General属性依次为:【注意大小写】
相应的这里picture控件的属性为:
音量滑块的属性为:
Group Box的属性为:
2个静态文本的属性只要改General就行啦:
2个文本编辑框也只要改General就行:
最后是list control控件的属性:
好啦,最终的效果就是这样的:前面这么啰嗦大家千万别弄错啦!接下来就是写代码啦!
3、写代码实现功能
1、变量绑定:
查看->建立类向导->Member Variables
将其设置为:
【双击对应蓝条即出现设置对话框】最后别忘点确定!
2、加入图片资源
【首先用格式工厂转换出32X32的24张bmp图片,放入工程文件的res文件中->进入Resource界面->右键Tao_Music resources->insert->弹出的对话框点击导入然后将你的24张bmp图片一个一个导入,注意这里最多每次导入8个,要分批导入!导入后的ID为IDB_BITMAP1----IDB_BITMAP24】
3、新建mp3类:
【插入->新建类】
4、修改Tao_MusicDlg.h
在CTao_MusicDlg类里加入下面函数和变量
1 public: 3 void Show(int cnt); 5 void addsong(TCHAR * name); 7 void suiji(); 9 void pre(); 11 void next(); 13 void drawpic(int nTimerID); 15 BOOL AnalyseLrc(TCHAR* LrcFile);//歌词解析函数 17 BOOL DownLoad(TCHAR* Url, TCHAR* SaveName);//下载资源函数 19 bool down(TCHAR* song,TCHAR* songer,TCHAR* getstr);//下载XML资源函数 20 21 23 public: 25 int hour,minute,second; 27 CString cursong; 29 int showstr; 31 int donghuakind;//动画种类[初始化时给一个随机数,选择显示的动画种类] 33 CImageList m_imList; 35 typedef struct _LRC_INFO//定义歌词结构体 37 { 39 int Time; 41 TCHAR Lyric[256]; 43 }LRC_INFO; 45 LRC_INFO LrcInfo[500];
5、修改Tao_Music.cpp
在include下面再引入下面几个文件和库:
1 #include "mp3.h" 2 #include "mmsystem.h" 3 #include "digitalv.h" 4 #include <afxinet.h> 5 #include <shlwapi.h> 6 #pragma comment(lib,"Winmm.lib") 7 #pragma comment(lib,"wininet.lib") 8 #pragma comment(lib, "shlwapi.lib")
紧接着在全局声明一个mp3型的全局变量:
1 mp3 Mp3;
转到OnInitDialog()函数处在return 前加入如下代码:
1 // TODO: Add extra initialization here 2 SetWindowText("MP3播放器");//标题 3 m_slider.SetRange(0,1000); //移动范围 4 m_slider.SetPos(500);//滑块指针的初始位置 5 GetDlgItem(IDC_open)->EnableWindow(FALSE); 6 GetDlgItem(IDC_pause)->EnableWindow(FALSE); 7 GetDlgItem(IDC_del)->EnableWindow(FALSE); 8 //List 初始化--------------------- 9 // 设置CListCtrl控件扩展风格:整行选中\子项目图标列表|LVS_EX_GRIDLINES 10 DWORD dwStyle; 11 dwStyle =m_StoreItems.GetExtendedStyle(); 12 dwStyle = dwStyle|LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES ; 13 m_StoreItems.SetExtendedStyle(dwStyle); 14 // 载入32*32像素 24位真彩(ILC_COLOR24)图片 15 m_imList.Create(32,32,ILC_COLOR24,10,20); // 创建图像序列CImageList对象 16 // 设置CImageList图像列表与CListCtrl控件关联 LVSIL_SMALL小图标列表 17 m_StoreItems.SetImageList(&m_imList,LVSIL_SMALL); 18 // 向列表视图控件InsertColumn插入3列数据 19 CRect mRect; 20 m_StoreItems.GetWindowRect(&mRect); // 获取控件矩形区域 21 int length = mRect.Width()-3; 22 m_StoreItems.InsertColumn(0, _T("图片"), LVCFMT_CENTER,40, -1); 23 m_StoreItems.InsertColumn(1, _T("信息"), LVCFMT_LEFT, length-60, -1); 24 //-------------- 25 cursong=""; 26 showstr=0; 27 donghuakind=rand()%4; 28 // TODO: Add extra initialization here
在文件最后依次添加如下函数:
6、功能实现:
进入form界面:双击添加按钮:
点击ok在新产生的函数中加入代码:
哈哈,运行一下看看第一个按钮的功能实现没!!!
同样第二个按钮有:
第3个按钮:
1 pre();
第4个按钮:
第5个按钮:
1 next();
第6个按钮:
第7个按钮:
第8个按钮:
到目前为止已经可以搜索、加载音乐播放、暂停....功能都有啦!
似乎音量还不能起作用,下面的列表不能双击播放【上面的显示条有点偏上,大家可以调一下上面的按钮,使两个文本条带正好在黑框里,也可以改动代码,代码在show函数里,通过改动 int tposx,tposy,sposx,sposy;四个变量的值来控制文本显示位置,其中t开头的控制下面的,s开头的控制上面的】
7、加一个TImer消息使时间跑起来!
查看->类向导->Message Maps->在Messages中找到WM_TIMER双击,在Member functions将出现对应的消息函数:
双击对应函数,进入代码编辑区:
加入代码:
1 if(nIDEvent==0)Show(3);
现在时间可以跑啦!
8、给list添加消息函数,使双击可以播放:
点击ok接着双击Member Function对应的函数进入代码编辑区:加入代码:
9、给音量控制滑块加消息,使音量控制实现
双击member function对应的函数,进入代码编辑区,加入代码:
1 Mp3.Setvolumn(1000-m_slider.GetPos()); 2 UpdateData(false);
双击member function对应的函数,进入代码编辑区,加入代码:
1 Mp3.Setvolumn(1000-m_slider.GetPos());
编译运行完工!
哈哈,终于所有的任务完成,编译运行,听听自己做的音乐播放器咋样!【如果想加一个最小化按钮,就点击form的属性,做相应的修改】
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3768717.html,如需转载请自行联系原作者