对于音乐播放,有很多现成的库函数供我们使用,对于初级的音乐播放和控制,使用windows为我们提供的MCI系列的接口就可以很容易实现

MCI英文单词Media Control Interface的缩写,即媒体控制接口,可以实现音视频文件的播放和常用控制,对于完成一个mp3音乐播放器而言非常简便,对于有C语言基础的人来说都可以轻易实现!

MCI系列的接口需要引用的前提是需要包含对应的头文件和库文件,需要包含windows.h和WinMM.Lib的静态库,即代码如下:

#include<windows.h>
#pragma comment(lib,"WinMM.Lib")

MCI中最最常用的函数就是mciSendString函数,几乎所有的音乐播放、暂停、停止以及常见的控制操作都可以通过这个函数实现,它的原型如下:

MCIERROR mciSendString(
   LPCTSTR lpszCommand,
   LPTSTR  lpszReturnString,
   UINT    cchReturn,
   HANDLE  hwndCallback
);


它的返回值为执行成功与否的错误值,正常执行成功则返回0,否则返回错误代码

而它的四个参数作用分别为:

第一个参数,是一个字符串的指针类型,表示要执行的命令

第二个参数,是一个返回回来的的缓冲区,为字符串指针类型

第三个参数,是这个缓冲区(即第二个参数)的长度大小

第四个参数,为回调窗口的句柄,本教程为控制台应用基本不需要,所以传NULL


为了方便大家理解,首先举一个简单例子(第二、第三、第四个参数都为空情况下),如打开一个设备或音乐。

可以这样写

mciSendString("open 0.mp3",NULL,0,NULL);

即可打开这个0.mp3的音乐(注意这里是相对路劲,因此0.mp3要与本程序位于同级目录下),但注意,open命令仅仅是打开,但并未播放!因此还听不到声音!此为第一步,

open文件之后,就可以对文件进行其他的操作了,包括播放、暂停、停止、继续、获取音乐文件信息等等操作,如播放此音乐可以写:

mciSendString("play 0.mp3",NULL,0,NULL);

如果要关闭这个0.mp3文件,停止占用释放该文件,可以这样使用:

mciSendString("close 0.mp3",NULL,0,NULL);

因此完整的可以播放音乐的代码如下:

#include#include#pragma comment(lib,"WinMM.Lib")
/////*****************dotcpp.com************///////
int main()
{
	int n;
	mciSendString("open 0.mp3",NULL,0,NULL);//打开音乐文件
	mciSendString("play 0.mp3",NULL,0,NULL);//播放音乐文件
	getchar();
	mciSendString("close 0.mp3",NULL,0,NULL);//关闭音乐文件
	return 0;
}

需要注意的是,播放文件之后,程序不能立即调用close或者程序直接结束退出,都会听不到音乐,需要加一个getchar或者Sleep之类的代码让程序等待,由于播放音乐是非阻塞进行,因此不会影响你听音乐!

大家可以自行尝试!


连载中...

点赞(0)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

高大牛 2年前 回复TA
牛啊牛啊~
李同学 3年前 回复TA
厉害