开发者社区> 史迪奇2号> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[MFC] MFC音乐播放器 傻瓜级教程 网络 搜索歌曲 下载

简介:
+关注继续查看


 

 

         》目录《

》——————————————————————《

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类:

【插入->新建类】

 

 mp3.h
 mp3.cpp

 

 

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在新产生的函数中加入代码:

 View Code

 

哈哈,运行一下看看第一个按钮的功能实现没!!!

同样第二个按钮有:

 View Code

 

第3个按钮:

 

1 pre();

 

第4个按钮:

 

 View Code

 

第5个按钮:

 

1 next();

 

第6个按钮:

 

 View Code

 

第7个按钮:

 

 View Code

 

第8个按钮:

 

 View Code

 

到目前为止已经可以搜索、加载音乐播放、暂停....功能都有啦!

 

似乎音量还不能起作用,下面的列表不能双击播放【上面的显示条有点偏上,大家可以调一下上面的按钮,使两个文本条带正好在黑框里,也可以改动代码,代码在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对应的函数进入代码编辑区:加入代码:

 View Code

 

 

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
计算机视觉教程1-3:图解透视几何原理(灭点、灭线)
计算机视觉教程1-3:图解透视几何原理(灭点、灭线)
104 0
【期末复习】计算机网络 谢希仁版(四)网络层(重点)
网络层 网络层 1. 网络层的核心功能: 分组转发与路由选择 1.1 网络协议IP 1.2 一些概念 2. 数据报服务和虚电路服务 2.1 虚电路网络 2.1.1 概念 2.1.2 组成 2.2 数据报网络 2.3 两者对比 3. IP 地址,子网掩码,无类地址,子网划分,路由聚合 3.1 IP地址 3.1.1 基础知识 3.1.2 特点 3.1.3 IP地址与硬件地址 3.1.4 两个地址127.0.0.1 和 192.168.1.xxx 区别 3.2 子网掩码 3.3 无类地址 3.4 子网划分 3.5 路由聚合 4. ARP协议 5. IP 数据报格式 6. IP 报文分片重组
46 0
Liquid网络闪电通道教程
本教程介绍如何使用Liquid侧链的c-lightning来创建闪电支付通道。使用这些支付通道,用户可以实时、私有地交易Liquid-BTC。 Liquid网络包含有对私密交易和资产发行的支持,因此用户可以使用闪电支付通道交易任何在Liquid网络上发行的资产,例如通证化的发币、加密资产等等。
831 0
C#网络编程技术微软Socket实战项目演练(三)
一、课程介绍 本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的第三部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程!本次高级系列课程适合人群如下: 1、有一定的NET开发基础并对Socket技术有一定了解和认识。
1881 0
858
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载