五分钟让你的C语言播放音乐


前言

播放windows的一个API函数有两个PlaySound和mciSendString
PlaySound可以用来播放音乐,但是不支持mp3和wma
因此今天我们用mciSendString函数来播放音乐


一、mciSendString函数

官方枯燥解释:

函数原型为:

MCIERROR mciSendString(
LPCSTR lpstrCommand,
LPSTR lpstrReturnString,
UINT uReturnLength,
HWND hwndCallback
);

使用mciSendString播放音乐
1,返回值:MCIERROR即DWORD类型,而DWORD类型就是unsigned int,执行成功返回0,出错返回非0值

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

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

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

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

说人话:

mciSendString(" ",0,0,0);
第一个参数用来发出指令
一共有四个: open 打开音乐文件 play 播放音乐 repeat 重复播放 close 关闭音乐文件

二、上代码

1.必要的头文件和预处理

我在很久之前刚开始想要播放音乐的时候也看了大部分的文章找了很多资料但是都说的不是特别详细
今天详细介绍一下必要的两个头文件和一个预处理

#include<windows.h>

API函数必然要用windows头文件
同时也用到system(“pause”);函数防止程序直接结束导致的不出声音


#include<mmsystem.h> —用来包含多媒体设备接口头文件


#pragma comment (lib,“winmm.lib”)—用来加载静态库


2.音乐文件

值得注意的是mciSendString支持MPEG,AVI,WAV,MP3等格式

但是建议大家下载的音乐不要在网易云上其解码方式不一样可能导致有的播放失败

下载音乐之后点击源文件所在目录
在这里插入图片描述
把所要播放的音乐文件拷过来要和cpp文件在同一目录下
在这里插入图片描述

3.修改字符集为多字符

具体三种方法
在另一篇文章中讲过https://blog.csdn.net/weixin_51484780/article/details/118851294
否则会出现报错
在这里插入图片描述

4.播放音乐

这里我的音乐文件名称是2.mp3

代码如下(示例):

#include<Windows.h>
#include<mmsystem.h>//包含多媒体设备接口头文件
#pragma comment (lib,"winmm.lib")//加载静态库
int main()
{
	//alias   的作用是取别名
	mciSendString("open 2.mp3 alias a ",0,0,0);//音乐在当前目录下也可以写"open ./2.mp3"./这里可以省略
	mciSendString("play a", 0, 0, 0);
	//mciSendString("repeat a", 0, 0, 0);  repeat 重复播放
	//mciSendString("close a", 0, 0, 0);  close 关闭播放
	system("pause");//这里没有暂停程序会直接停止听不到音乐
	return 0;
}

还有一点要说明的是当你的音乐不和源文件在同一目录下的时候需要open 后边加上该音乐文件的相对路径
运行过程如下,声音大家自己去倾听吧:
在这里插入图片描述


此时无声胜有声
在这里插入图片描述

  • 89
    点赞
  • 218
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 38
    评论
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 天 真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值