首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

两行C语言代码播放音乐,就这么so easy!你学到了吗?

函数介绍

为了实现用C语言播放音乐,我们需要用到windows的一个API,mciSendString。

函数原型为:

MCIERROR mciSendStringA(

LPCSTR lpstrCommand,

LPSTR lpstrReturnString,

UINT uReturnLength,

HWNDhwndCallback

);

1,返回值:MCIERROR即DWORD类型,而DWORD类型就是unsigned int,执行成功返回0,出错返回非0值

2,lpstrCommand,指向以null结尾的命令字符串:”命令 设备[ 参数]”

3,lpstrReturnString,指向接收返回信息的缓冲区,为NULL时不返回信息

4,uReturnLength,上述缓冲区的大小

5,hwndCallback,在命令串中含notify时,它指定一个回调窗口的句柄,一般为NULL

使用方法

具体的播放代码是这样子滴:

mciSendString("stop a", NULL, 0, NULL); //停止播放音乐

mciSendString("close a", NULL, 0, NULL); //关闭音乐

open指令打开需要播放的音乐,alias后面制定了前面文件路径的别名,以后想要操作这个文件直接使用这个别名就行了,后面的三个参数平时,就记着写作NULL,0,NULL即可。

第二条语句play指令后面接上面定义的别名,repeat表示歌曲循环播放。如果想要在音乐播放时停止播放,有以下代码

mciSendString("stop a",NULL,0,NULL); //停止播放音乐

mciSendString("close a",NULL,0,NULL); //关闭音乐

总而言之:play a开始播放,stop a停止播放,close a关闭文件,如果需要同时播放多个音乐的话应该为每个音乐设置不同的别名,这样就可以了

注意:还有一个函数PlaySound可以用来播放音乐,但是不支持mp3和wma

返回值错误检查

有时候播放音乐会没有声音,这时候就需要对返回值进行检查了,在返回错误码的同时,还会有对应的错误信息,那么怎么查看信息呢?

这里需要用到另外一个函数mciGetErrorString。

函数原型:

BOOL mciGetErrorStringA(

MCIERROR mcierr,

LPSTR pszText,

UINT cchText

);

1,返回值,没有错误返回非零值,错误返回0

2,mcierr,mciSendString返回的错误代码。

3,pszText,指向缓冲区的指针,该缓冲区接收错误描述,接受之后输出即可看到信息。

4,cchText,pszText缓冲区的长度(以字符为单位)

具体代码如下:

char buf[100] = "";

char buf1[100] = "";

DWORD m1= mciSendString("open ThatGirl.mp3 alias a", NULL, 0, NULL);

int temp=mciGetErrorString(m1, buf, 100);

DWORD m2 = mciSendString("play a", NULL, 0, NULL);

mciGetErrorString(m2, buf, 100);

printf("m1-%u,m2-%u temp:%d\n",m1,m2,temp);

printf("%s\n%s\n", buf,buf1);

运行结果如下:

我这里是能正常播放的,所以一切OK!

最后附:小编正在建设中的编程公众号【草莓味狸猫】,欢迎到访

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200520A0DDL100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券