2012-10-06 90 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