如何在C ++ Windows 7下启动/停止WAV声音

时间:2018-09-04 15:28:53

标签: c++ windows multithreading audio poco

我尽力为C ++ / Visual Studio中的以下需求找到解决方案:

这很简单:为了发出警报,我必须连续循环播放文件中的许多wav声音,每个声音之间都有短暂的延迟:

声音1 ...声音2 ...声音n ...声音1 ...声音2 ...

任何时候都应该可以取消这种声音序列。

我尝试和<div class="holder"> <span id="change1"></span> <span id="change2"></span> <span id="change3"></span> <div class="image-holder"> <img src="https://picsum.photos/400/400?image=1040" class="slider-image" > <img src="https://picsum.photos/400/400?image=1041" class="slider-image" > <img src="https://picsum.photos/400/400?image=1042" class="slider-image" > </div> <div class="button-holder"> <a href="#change1" class="button"></a> <a href="#change2" class="button"></a> <a href="#change3" class="button"></a> </div> </div>一起玩,但是问题是,声音一旦运行就无法正确停止。

https://msdn.microsoft.com/en-us/library/Dd743680(v=VS.85).aspx

通过标志异步播放声音时,可以通过为参数1指定NULL来停止声音,但是我不知道在sound-2开始之前声音1何时结束。 。实际上,启动声音2会中断声音1。

同步模式下,无法中断声音。

为了能够取消声音,我尝试将PlaySound放入PlaySound(),但是如何取消线程?没有预料到要取消线程...使用Poco::Thread instaed可以在取消时提供Poco::Task,因此也不起作用。

那是首选的解决方案? 有更好的解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

它们都是WAV文件,您知道它们会持续多久。当您开始播放sound1时,请存储结束时间。无需猜测。