⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sound.cs

📁 C#开发的运行于windows mobile PDA上的游戏
💻 CS
字号:
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using System.IO;

namespace Lines.Utils
{
	/// <summary>
	/// Helper class to play sounds in .NET Compact Framework environment.
	/// </summary>
	/// <example>
	/// Usage:
	/// <code>
	///	Sound sound = new Sound("Program Files\\MyApp\\test.wav");
	///	sound.Play();
	/// </code>
	/// or
	/// <code>
	///	Sound sound = new Sound(Assembly.GetExecutingAssembly().GetManifestResourceStream("test.wav"));
	///	sound.Play();
	/// </code>
	/// </example>
	/// <remarks>
	/// This class provided by <a href="http://www.gotdotnet.com">www.gotdotnet.com</a> and might be found here 
	/// <a href="http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/CompactFramework/samples/playsounds/playsounds.src&amp;file=CS\Sound.cs">Sound.cs</a>
	/// </remarks>
	public class Sound
	{
		private byte[] m_soundBytes;
		private string m_fileName;

		/// <summary>
		/// Defines flags for API function to play sounds that is wrapped by this class
		/// </summary>
		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>
		/// Constructs the Sound object to play sound data from the specified file.
		/// </summary>
		/// <param name="fileName">The file name the sound data will be played from</param>
		public Sound (string fileName) 
		{
			m_fileName = fileName;
		}

		/// <summary>
		/// Constructs the Sound object to play sound data from the specified stream.
		/// </summary>
		/// <param name="stream">The stream of data to be played directly</param>
		public Sound(Stream stream)
		{
			// read the data from the stream
			m_soundBytes = new byte [stream.Length];
			stream.Read(m_soundBytes, 0, (int)stream.Length);
		}

		/// <summary>
		/// Plays the sound
		/// </summary>
		public void Play() 
		{
			// if a file name has been registered, call WCE_PlaySound, 
			//  otherwise call WCE_PlaySoundBytes
			if (m_fileName != null)
				WCE_PlaySound(m_fileName, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));
			else
				WCE_PlaySoundBytes(m_soundBytes, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_MEMORY));
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -