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

相关文章
|
3月前
|
SQL 安全 算法
爆赞!终于有大佬把网络安全零基础入门教程给讲明白了!
网络安全的一个通用定义指网络信息系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的破坏、更改、泄露,系统能连续、可靠、正常地运行,服务不中断。网络安全简单的说是在网络环境下能够识别和消除不安全因素的能力。 网络安全在不同环境和应用中有不同的解释,例如系统运行的安全、系统信息内容的安全、信息通信与传播的安全等。 网络安全的主体是保护网络上的数据和通信的安全,数据安全性是指软硬件保护措施,用来阻止对数据进行非授权的泄漏、转移、修改和破坏等,通信安全性是通信保护措施,要求在通信中采用保密安全性、传输安全性、辐射安全性等措施。
|
25天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
59 1
|
2月前
|
API
|
2月前
|
存储 网络架构
网络速率与下载速率
【8月更文挑战第8天】
122 1
网络速率与下载速率
|
2月前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
44 9
|
2月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
本文介绍了如何在MacOS系统上安装VOSviewer软件,并以ESN(Echo State Network)网络的研究为例,通过VOSviewer对相关科学文献进行可视化分析,以深入了解ESN在学术研究中的应用和发展情况。
184 0
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
|
2月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
2月前
|
安全 网络协议 网络安全
网安科班精选!爱荷华大学教授的网络安全零基础入门教程!
网络就像一把双刃剑,给我们的生活、交流、工作和发展带来了便利,但同时也给信息安全以及个人隐私带来了威胁。网络和信息安全问题不仅影响了网络的普及和应用,还关系到企国家、军队、企业的信息安全和社会的经济安全,让人又爱又恨。 今天给大家分享的这份手册,主要从网络漏洞、协议和安全解决方案等方面来探讨网络安全问题。我们把网络看成是不安全和安全的源头,通过分析网络漏洞、探测、攻击和减少攻击的方法,来研究不同的网络协议。
|
3月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
63 5

热门文章

最新文章