我的程序正在播放声音PlaySound
。
程序运行正常,我可以听到声音,但是当歌曲结束时,会有大约1秒钟的延迟,然后歌曲再次播放。
我问Google,他给了我一个问题-PlaySound() Delay
回答的人说,SND_SYNC
我们需要使用SND_ASYNC
,我听了他的话,但听不到。
您有什么建议吗?
顺便说一句,这是我目前正在为此项目使用的歌曲-Nyan Cat
我希望这首歌能立即重新播放,以使用户听不到延迟。
最终密码:
#include <iostream>
#include <Windows.h>
#include <string>
#pragma comment(lib, "winmm.lib")
int main()
{
std::string pathtosound = "C:\\Users\\roile\\Documents\\Dragonite\\nyan.wav";
while (true) {
PlaySound(pathtosound.c_str(), 0, SND_SYNC);
}
return 0;
}
答案 0 :(得分:1)
Microsoft Docs中对SND_LOOP
标志的描述如下:
声音会反复播放,直到再次按下 PlaySound pszSound 参数设置为 NULL 。如果设置了此标志,则还必须设置 SND_ASYNC 标志。
请注意最后一句话,因此以下代码可能会更好地工作:
#include <iostream>
#include <Windows.h>
#include <string>
#pragma comment(lib, "winmm.lib")
int main()
{
std::string pathtosound = "C:\\Users\\roile\\Documents\\Dragonite\\nyan.wav";
PlaySound(pathtosound.c_str(), 0, SND_ASYNC | SND_LOOP);
while (true) {
// Stop loop at some point
}
PlaySound(NULL, 0, 0); // Stop sample
return 0;
}