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

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

Жанры

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

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

Шрифт:

Песочные часы

При выполнении длительных ресурсоемких операций нужно показать пользователю, что устройство работает, а не зависло. Лучше всего вывести на экран устройства курсор ожидания. В карманных компьютерах в качестве такого курсора используются не песочные часы, как в настольных компьютерах, а анимированный разноцветный круг, Установить данный тип курсора в приложении очень просто, что иллюстрирует фрагмент кода, приведенный в листинге 5.1.

Листинг 5.1

// Устанавливаем курсор ожидания

Cursor.Current = Cursors.WaitCursor;

//
возвращаем курсор по умолчанию

Cursor.Current = Cursors.Default;

На рис. 5.1 показано приложение с соответствующим курсором.

Рис. 5.1. Отображение курсора ожидания

Обработка события Tap-and-Hold

Так как в карманных компьютерах не используется правая кнопка мыши, то для вызова контекстного меню используется операция Tap-and-Hold. Пользователь касается стилусом экрана и некоторое время удерживает нажатие. Если элемент, на поверхности которого находится стилус, связан с элементом

ContexMenu
, то на экране появится контекстное меню. А что делать, если мы хотим создать собственный обработчик события Tap-and-Hold? В этом случае надо добавить в проект таймер и написать код для обработки событий
Mouse_Down
,
Mouse_Up
и
timer1_Tick
. Для таймера следует задать интервал, необходимый для инициирования события. Сам код приведен в листинге 5.2.

Листинг 5.2

private void Form1_MouseDown(object sender, MouseEventArgs e) {

 // включаем таймер

 timer1.Enabled = true;

}

private void Form1_MouseUp(object sender, MouseEventArgs e) {

 timer1.Enabled = false;

 label1.Text = "";

}

private void timer1_Tick(object sender, EventArgs e) {

 label1.Text = "Вы нажали на экран";

}

Клавиатура

На большинстве карманных компьютеров нет стандартной клавиатуры, поэтому ввод текста осуществляется с помощью виртуальной клавиатуры SIP. В Visual Studio 2005 клавиатура SIP представлена элементом

InputPanel
. Но в последнее время стали появляться устройства с настоящей встроенной клавиатурой. Как правило, эти устройства имеют квадратный экран. Среда разработки поддерживает эмуляторы подобных моделей (рис. 5.2). Эти эмуляторы в своем названии содержат слово «Square».

Рис. 5.2. Эмулятор устройства с клавиатурой

Кроме того, на устройствах имеются клавиши навигации, клавиша

Enter
и кнопки запуска определенных приложений. Все эти клавиши могут обрабатывать стандартные события.

Клавиши навигации

Если вы в процессе создания приложения в режиме работы с формой щелкнуть мышью на любой из кнопок навигации, то среда разработки сгенерирует код для этих кнопок в событии

Form_KeyDown
. В листинге 5.3 приведен пример обработчика этого события.

Листинг 5.3

private void Form1_KeyDown(object sender, KeyEventArgs e) {

 if ((e.KeyCode == System.Windows.Forms.Keys.Up)) {

label1.Text = "Клавиша
Вверх";

 }

 if ((e.KeyCode = System.Windows.Forms.Keys.Down)) {

label1.Text = "Клавиша Вниз";

 }

 if ((e.KeyCode == System.Windows.Forms.Keys.Left)) {

label1.Text = "Клавиша Влево";

 }

 if ((e.KeyCode == System.Windows.Forms.Keys.Right)) {

label1.Text = "Клавиша Вправо";

 }

 if ((e.KeyCode == System.Windows.Forms.Keys.Enter)) {

label1.Text = "Клавиша Enter";

 }

}

Как видите, приложение определяет нажатую клавишу при помощи перечисления

System.Windows.Forms.Keys
. Если открыть виртуальную клавиатуру и нажать на клавиши со стрелками, то можно убедиться, что они тоже инициируют событие
Form_KeyDown
(рис. 5.3). Если протестировать пример на устройстве с настоящей клавиатурой, то можно заметить, что приложение правильно обрабатывает нажатие на встроенные клавиши со стрелками.

Рис. 5.3. Обработка нажатий клавиш навигации

Выключение устройства

На карманных компьютерах также есть кнопка выключения устройства. На самом деле при нажатии на эту кнопку устройство не выключается, а переходит в особый спящий режим. В мобильных устройствах программы и данные хранятся в памяти, и если устройство действительно выключить, то все приложения и данные просто пропадут. Разработчик может программно перевести устройство в спящий режим, имитируя нажатие этой кнопки выключения с помощью функции API

keybd_event
, как показано в листинге 5.4.

Листинг 5.4

/// <summary>

/// Функция имитирует нажатия клавиш на клавиатуре

/// </summary>

/// <param name="bVk">Виртуальный код клавиши для имитации

/// нажатия и отпускания клавиши</param>

/// <param name="bScan">Зарезервировано - установлено в

// 0</param>

/// <param name="dwFlags">Флаг</param>

/// <param name="dwExtraInfo">Дополнительная информация</param>

[DllImport("coredll.dll", CharSet = CharSet.Unicode)]

public static extern void

keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

// константа для кнопки выключения устройства

public const int VK_OEM_8 = 0xDF;

private void butOff_Click(object sender, EventArgs e) {

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

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Жандарм 3

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

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

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

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

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

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

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

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

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

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар