Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:
Листинг 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);

/// <summary>

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

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

/// </summary>

public Sound(string fileName) {

m_fileName = fileName;

}

/// <summary>

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

/// ресурсов

/// </summary>

public Sound(Stream stream) {

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

m_soundBytes = new byte[stream.Length];

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

}

/// <summary>

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

/// </summary>

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 {

public Form1 {

InitializeComponent;

InitializeComponent;

#if DEBUG

MinimizeBox = false;

#else

MinimizeBox = true;

#endif

}

private void butResource_Click(object sender, EventArgs e) {

Sound sound =

new Sound(Assembly.GetExecutingAssembly.GetManifestResourceStream(

"PlaySound_CS.chimes.wav"));

sound.Play;

}

private void butFile_Click(object sender, EventArgs e) {

Sound sound = new Sound("Windows\\alarm3.wav");

sound.Play;

}

 }

}

Системные звуки

Также разработчик может использовать функцию

MessageBeep
, позволяющую проигрывать системные звуки. Код, использующий эту функцию, приведен в листинге 13.13.

Листинг 13.13

[DllImport("coredll.dll")]

extern static void MessageBeep(uint BeepType);

private void butBeep_Click(object sender, EventArgs e) {

 MessageBeep(0);

}

Системное время

Чтобы получить или установить системное время на устройстве, нужно использовать функции

GetSystemTime
и
SetSystemTime
. Следует учитывать, что функция
GetSystemTime
возвращает время по Гринвичу, а не местное время. Код, иллюстрирующий применение этих функций, приведен в листинге 13.14.

Поделиться:
Популярные книги

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Отчий дом. Семейная хроника

Чириков Евгений Николаевич
Проза:
классическая проза
5.00
рейтинг книги
Отчий дом. Семейная хроника

Скандальная свадьба

Данич Дина
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Скандальная свадьба

Путанабус. Трилогия

Старицкий Дмитрий
Фантастика:
боевая фантастика
6.93
рейтинг книги
Путанабус. Трилогия

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

От Советского Информбюро - 1941-1945 (Сборник)

Неизвестен 3 Автор
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
От Советского Информбюро - 1941-1945 (Сборник)

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Отмороженный 14.0

Гарцевич Евгений Александрович
14. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Отмороженный 14.0