我想在程序在 C++ 中运行时播放声音。我正在使用代码:
void fighterplanesound()
{PlaySound(TEXT("bombdrop.wav"), NULL, SND_FILENAME|SND_ASYNC);}
我认为 SND_ASYNC 标志可以解决这个问题,但它没有。正在发生的事情是程序将暂停或控制将不会继续,直到声音播放完毕。如何在程序继续运行时播放声音。澄清一下,该程序是一个在 MS-DOS 窗口中运行的 Windows 控制台程序。
我想在程序在 C++ 中运行时播放声音。我正在使用代码:
void fighterplanesound()
{PlaySound(TEXT("bombdrop.wav"), NULL, SND_FILENAME|SND_ASYNC);}
我认为 SND_ASYNC 标志可以解决这个问题,但它没有。正在发生的事情是程序将暂停或控制将不会继续,直到声音播放完毕。如何在程序继续运行时播放声音。澄清一下,该程序是一个在 MS-DOS 窗口中运行的 Windows 控制台程序。
在不同的线程中播放声音怎么样?
行。我发现你不能在函数中包含 PlaySound 方法,因为即使 ASYNC 标志在那里,控件必须在返回之前完全执行 PlaySound 方法,所以不要把它放在函数中,除非有更多函数中的代码(在这种情况下,声音将在该代码执行时播放),或者换句话说,在 PlaySound 执行完成之前,控制不会从函数返回,并且因为函数中没有其他代码要执行,所以控制等待直到 PlaySound 方法完成,然后继续。
实际上我在我的 iOS 应用程序上遇到了同样的问题。您知道播放 .wav 文件需要多长时间。您可以创建一个计时器,在文件的每个结束时间段调用您的 fighterplanesound() 方法。不是最好的解决方案,但它对我有用。