之前用的BGM播放函数一直是
BOOL PlaySound(
LPCTSTR pszSound,
HMODULE hmod,
DWORD fdwSound
);
后来在一个俄罗斯方块游戏里我想加入一些音效,就试着在PlaySound()播放背景音乐的时候在另一个函数里又调用了一个PlaySound,
结果声音就中断了,原来的音乐哑巴了,新增的也不唱,我才接着去请教万能的度娘,发现PlaySound函数确实局限性很大,只能用wav格式不说,
完全不能满足我想让音效丰富的求(装)知(逼)欲啊!完全就是给新手发糖的~
于是我发现了一个神奇的API:mciSendString
MCIERROR mciSendString(
LPCTSTR lpszCommand, //MCI命令字符串
LPTSTR lpszReturnString, //存放反馈信息的缓冲区
UINT cchReturn, //缓冲区的长度
HANDLE hwndCallback //回调窗口的句柄,一般为NULL
); //若成功则返回0,否则返回错误码。
例:mciSendString(L"play music.mp3", NULL, 0, NULL);
链接来自百度百科:https://baike.baidu.com/item/mciSendString/2905255?fr=aladdin
好多命令没试过,而且没具体做过东西好多地方也不太理解,先直接贴一下MCI命令打个卡,方便下次用到的时候去查
使用MCI设备一般包括打开、使用和关闭三个过程,常用的MCI命令有:
open 打开设备
close 关闭设备
play 开始设备播放
stop 停止设备的播放或记录
record 开始记录
save 保存设备内容
pause 暂停设备的播放或记录
resume 恢复暂停播放或记录的设备
seek 改变媒体的当前位置
capacility 查询设备能力
info 查询设备的信息
status 查询设备状态信息
MCI的大部分命令可以控制不同的媒体设备,但其中record和save命令并不是所有MCI设备都可以使用。
MCI命令的使用是很随意的,只要先打开,最后关闭,中间可以随意调用各种命令。
最后再贴一个官方链接https://docs.microsoft.com/zh-cn/windows/desktop/Multimedia/multimedia-command-strings