Читаем Программирование КПК и смартфонов на .NET Compact Framework полностью

private extern static int PlaySoundBytes(byte[] szSound, IntPtr hMod,

 int flags);

Данная функция использует для параметра flags несколько предопределенных констант. Более подробную информацию о назначении флагов этой функции можно найти в документации.

После этого создаются два конструктора с разными параметрами, которые будут использоваться для разных методов воспроизведения звука, и метод Play. Теперь нужно перейти к основной форме и разместить на ней две кнопки. Первая кнопка, butResource, будет проигрывать звуковой фрагмент, который хранится в ресурсах приложения. Кнопка butFilе запустит метод, который проигрывает аудиофайл.

Для того чтобы пример работал, понадобятся два звуковых файлов. В состав Windows XP входит несколько звуковых файлов. Для данного примера использовался файл chimes.wav. Его нужно добавить в проект. Чтобы включить файл chimes.wav в проект как ресурс, надо в свойствах файла выбрать пункт Build Action и установить значение Embedded Resource.

В качестве внешнего аудиофайла будет использоваться файл alarm3.wav, входящий в состав Windows Mobile. Этот файл находится в папке Windows. При желании можно использовать свой файл, но при этом надо в коде указать путь к нему. Теперь достаточно прописать код для обработки события Click созданных кнопок, как показано в листинге 13.11, — и приложение готово.

Листинг 13.11

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Runtime.InteropServices;

namespace PlaySound_CS {

 public class Sound {

  private byte[] m_soundBytes;

  private string m_fileName;

  private enum Flags {

   SND_SYNC = 0x0000,

   SND_ASYNC = 0x0001,

   SND_NODEFAULT = 0x0002,

   SND_MEMORY = 0x0004,

   SND_LOOP = 0x0008,

   SND_NOSTOP = 0x0010,

   SND_NOWAIT = 0x00002000,

   SND_ALIAS = 0x00010000,

   SND_ALIAS_ID = 0x00110000,

   SND_FILENAME = 0x00020000,

   SND_RESOURCE = 0x00040004

  }

  [DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]

  private extern static int PlaySound(string szSound, IntPtr hMod, int flags);

  [DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]

  private extern static int PlaySoundBytes(byte[] szSound, IntPtr hMod,

   int flags);

  ///

  /// Конструктор объекта Sound, который проигрывает звук из

  /// указанного файла

  ///

  public Sound(string fileName) {

   m_fileName = fileName;

  }

  ///

  /// Конструктор объекта Sound, который проигрывает звук из

  /// ресурсов

  ///

  public Sound(Stream stream) {

   // читаем данные из потока

   m_soundBytes = new byte[stream.Length];

   stream.Read(m_soundBytes, 0, (int)stream.Length);

  }

  ///

  /// Воспроизводим звук

  ///

  public void Play() {

   // Если из файла, то вызываем PlaySound.

   // если из ресурсов, то PlaySoundBytes.

   if (m_fileName != null)

    PlaySound(m_fileName, IntPtr.Zero,

     (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));

   else

    PlaySoundBytes(m_soundBytes, IntPtr.Zero,

     (int)(Flags.SND_ASYNC | Flags.SND_MEMORY));

  }

 }

}

Теперь нужно перейти к самой форме. Код для нее приведен в листинге 13.12.

Листинг 13.12

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Reflection;

namespace PlaySound_CS {

 public partial class Form1 : Form {

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных