使 PlaySound 非阻塞

Jef*_*son 4 c++ windows audio

我一直在测试声音,我注意到它PlaySound是阻塞的,即它会等到声音播放完毕才返回。

#include <iostream>
#include <Windows.h>
#include <mmsystem.h>

int main()
{
    PlaySound("E:/Downloads/eb_sfx_archive/brainshock.wav", 0, SND_FILENAME);
    std::cout << "this sound is cool";
    Sleep (500);
    std::cout << "\nmeh... not really";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码播放声音,但它会等待输出“this sound is Cool”,直到声音播放完毕。我怎样才能让它不这样做呢?

小智 6

异步播放声音:

PlaySound(L"E:\\Downloads\\eb_sfx_archive\\brainshock.wav", NULL, SND_ASYNC);
Run Code Online (Sandbox Code Playgroud)

来自MSDN文档:

声音异步播放,PlaySound声音开始后立即返回。要终止异步播放的波形声音,请PlaySound调用pszSoundset to NULL