Search code examples
c++-clistreamplaysound

How do I convert a System::IO::Stream^ to an LPCSTR for PlaySound?


I'm trying to embed and then play back a .wav file in a C++/CLI app but all the examples I've seen which use PlaySound are in VB. I can't see how to get froma Stream^ to the LPCSTR which PlaySound requires:

System::IO::Stream^ s = Assembly::GetExecutingAssembly()->GetManifestResourceStream ("Ping.wav");

LPCSTR buf = s->????;

PlaySound(buf, NULL, SND_ASYNC|SND_MEMORY|SND_NOWAIT);

I guess I need some sort of horrible .net memory conversion magic.


Solution

  • Use the System::Media::SoundPlayer class instead. It has a Stream property, assign your "s" variable to it, then call the Play() method.