在引入头文件和必要的库之后,我们就可以对音乐进行播放操作了
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四个命令,对应打开、播放、关闭
需要注意是:
要先打开(open)才能播放,打开这一步并非是播放!
最后用完,要停止(stop)和关闭(close)文件,来释放资源。
音乐文件可以绝对路径也可以相对路径,若为相对路径,注意文件位置。
由于代码顺序执行后会听不到音乐,所以在关闭(close)之前执行一个getchar让音乐播放后一直播放,直到按任意键结束。由于getchar是阻塞机制,因此程序在此等待从而音乐一直播放。
大家可以准备一个mp3文件,进行尝试。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程