在引入头文件和必要的库之后,我们就可以对音乐进行播放操作了

MCIERROR mciSendString(
LPCTSTR lpszCommand,            //第一个参数为一串控制字符串
LPTSTR  lpszReturnString,        //系统返回的信息
UINT    cchReturn,                //指明返回信息的最大长度
HANDLE  hwndCallback                //若对MCI装置设定了"notify"标志则需要在第四个参数填上返回窗口句柄。
);

对音乐播放的操作在于第一个参数,目前mci支持的操作有打开、关闭、播放、暂停等操作。如播放音乐就是“play name.mp3”命令,关闭则是“close  name.mp3”命令,其中name.mp3表示要操作的音乐文件。name是名字,后缀目前支持的不多,仅有mp3、wav、mpeg、avi等少数音乐格式。


对一个音乐文件的操作流程如同C语言操作文件一般,首先要先打开(open)音乐文件,最后要停止(stop)、关闭(close)音乐文件。

下面来看一个简单的播放例子:

#include <windows.h>
#pragma comment (lib,"winmm.lib")
int main()
{
	mciSendString("open dotcpp.mp3",NULL,0,NULL);
	mciSendString("play dotcpp.mp3",NULL,0,NULL);
	getchar();
	mciSendString("stop dotcpp.mp3",NULL,0,NULL);
	mciSendString("close dotcpp.mp3",NULL,0,NULL);
	return 0;
}

代码调用了三次mciSendString函数,注意第一个参数,分别是open、play、stop、closes四个命令,对应打开、播放、关闭

需要注意是:

  1. 要先打开(open)才能播放,打开这一步并非是播放!

  2. 最后用完,要停止(stop)和关闭(close)文件,来释放资源。

  3. 音乐文件可以绝对路径也可以相对路径,若为相对路径,注意文件位置。

  4. 由于代码顺序执行后会听不到音乐,所以在关闭(close)之前执行一个getchar让音乐播放后一直播放,直到按任意键结束。由于getchar是阻塞机制,因此程序在此等待从而音乐一直播放。


大家可以准备一个mp3文件,进行尝试。

点赞(0)

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

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

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

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

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

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

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

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

Dotcpp在线编译      (登录可减少运行等待时间)