2012-10-06 50 views
0

我使用n音讯VS2010中播放音乐在我的C++应用程序:敲定IWavePlayer n音讯C++

waveOutDevice = gcnew WaveOut(); 
volumeStream = gcnew WaveChannel32(gcnew Mp3FileReader("C:\\file.mp3")); 
mainOutputStream = volumeStream; 

waveOutDevice->Init(mainOutputStream); 
waveOutDevice->Play(); 

,它工作正常,但最终我不得不做出一个清理。实际上,我必须处理()代码中的IWavePlayer(waveOutDevice)。但Dispose()和Finalize()不是IWavePlayer的成员(错误C2039)。如果我不处理它,应用程序会给我一个WaveOut设计未关闭的错误。如何关闭它?

回答

0

WaveOut类在其Dispose方法中确实调用了waveOutClose API,因此,您可能可以并且也许应该干净地完成回放。如果你担心的是你只持有IWavePlayer指针,而不是WaveOut,那你为什么不保留这两个,这样你就可以做适当的终止。

+0

无论如何,waveOutDevice现在是WaveOut类型,但是配置和最终化不是成员 – iamnp

+0

在发布我的答案之前,我查看了NAudio源代码以确保它们是。 –

+0

'WaveOut^waveOutDevice;','waveOutDevice-> Dispose();'?使用该代码获得C2039。 – iamnp