O
org
I'm trying to play a .wav file in .NET CF 2.0
So I included the File I wished in Properties.Resources.myWaveFile .
I added the following Sound-class. This class is from MSDN, but I added an
additional Constructor for byte[]:
public Sound(byte[] data)
{
m_soundBytes = data;
}
and in my main-program i did an:
Sound sound = new Sound(Properties.Resources.miss);
sound.Play();
But this didn't do anything. Wenn I do an new Sound("myFile.wav") with
myFile.wav on the pocketPC,I can hear the sound. So what is wrong?!?Best
regardsJohannespublic class Sound{private byte[] m_soundBytes;private string
m_fileName;private enum Flags {SND_SYNC = 0x0000, /* play synchronously
(default) */SND_ASYNC = 0x0001, /* play asynchronously */SND_NODEFAULT =
0x0002, /* silence (!default) if sound not found */SND_MEMORY = 0x0004, /*
pszSound points to a memory file */SND_LOOP = 0x0008, /* loop the sound
until next sndPlaySound */SND_NOSTOP = 0x0010, /* don't stop any currently
playing sound */SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy
*/SND_ALIAS = 0x00010000, /* name is a registry alias */SND_ALIAS_ID =
0x00110000, /* alias is a predefined ID */SND_FILENAME = 0x00020000, /* name
is file name */SND_RESOURCE = 0x00040004 /* name is resource name or atom
*/}[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySound(string szSound,
IntPtr hMod, int flags);[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySoundBytes (byte[]
szSound, IntPtr hMod, int flags);/// <summary>/// Construct the Sound object
to play sound data from the specified file./// </summary>public Sound
(string fileName) {m_fileName = fileName;}/// <summary>/// Construct the
Sound object to play sound data from the specified stream.///
</summary>public Sound(Stream stream) {// read the data from the
streamm_soundBytes = new byte [stream.Length];stream.Read(m_soundBytes,
0,(int)stream.Length);}public Sound(byte[] data){m_soundBytes = data;}///
<summary>/// Play the sound/// </summary>public void Play () {// if a file
name has been registered, call WCE_PlaySound,// otherwise call
WCE_PlaySoundBytesif (m_fileName != null)WCE_PlaySound(m_fileName,
IntPtr.Zero, (int) (Flags.SND_ASYNC |
Flags.SND_FILENAME));elseWCE_PlaySoundBytes (m_soundBytes, IntPtr.Zero,
(int) (Flags.SND_ASYNC | Flags.SND_MEMORY));}}
So I included the File I wished in Properties.Resources.myWaveFile .
I added the following Sound-class. This class is from MSDN, but I added an
additional Constructor for byte[]:
public Sound(byte[] data)
{
m_soundBytes = data;
}
and in my main-program i did an:
Sound sound = new Sound(Properties.Resources.miss);
sound.Play();
But this didn't do anything. Wenn I do an new Sound("myFile.wav") with
myFile.wav on the pocketPC,I can hear the sound. So what is wrong?!?Best
regardsJohannespublic class Sound{private byte[] m_soundBytes;private string
m_fileName;private enum Flags {SND_SYNC = 0x0000, /* play synchronously
(default) */SND_ASYNC = 0x0001, /* play asynchronously */SND_NODEFAULT =
0x0002, /* silence (!default) if sound not found */SND_MEMORY = 0x0004, /*
pszSound points to a memory file */SND_LOOP = 0x0008, /* loop the sound
until next sndPlaySound */SND_NOSTOP = 0x0010, /* don't stop any currently
playing sound */SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy
*/SND_ALIAS = 0x00010000, /* name is a registry alias */SND_ALIAS_ID =
0x00110000, /* alias is a predefined ID */SND_FILENAME = 0x00020000, /* name
is file name */SND_RESOURCE = 0x00040004 /* name is resource name or atom
*/}[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySound(string szSound,
IntPtr hMod, int flags);[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySoundBytes (byte[]
szSound, IntPtr hMod, int flags);/// <summary>/// Construct the Sound object
to play sound data from the specified file./// </summary>public Sound
(string fileName) {m_fileName = fileName;}/// <summary>/// Construct the
Sound object to play sound data from the specified stream.///
</summary>public Sound(Stream stream) {// read the data from the
streamm_soundBytes = new byte [stream.Length];stream.Read(m_soundBytes,
0,(int)stream.Length);}public Sound(byte[] data){m_soundBytes = data;}///
<summary>/// Play the sound/// </summary>public void Play () {// if a file
name has been registered, call WCE_PlaySound,// otherwise call
WCE_PlaySoundBytesif (m_fileName != null)WCE_PlaySound(m_fileName,
IntPtr.Zero, (int) (Flags.SND_ASYNC |
Flags.SND_FILENAME));elseWCE_PlaySoundBytes (m_soundBytes, IntPtr.Zero,
(int) (Flags.SND_ASYNC | Flags.SND_MEMORY));}}