关于背景音乐(音效)的播放

之前用的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

 

猜你喜欢

转载自www.cnblogs.com/WinonaJia/p/9231305.html