Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework Страница 13

Тут можно читать бесплатно Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework. Жанр: Компьютеры и Интернет / Программирование, год -. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework» бесплатно полную версию:
Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?Прочитав эту книгу, вы получите знания, которые позволят вам уверенно создавать программы для карманных компьютеров и смартфонов. А огромное количество разнообразных примеров поможет быстро совершенствоваться и развиваться, обогащая свой опыт работы.Книга предназначена для начинающих программистов.

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework читать онлайн бесплатно

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework - читать книгу онлайн бесплатно, автор Александр Климов

private void button1_Click(object sender, EventArgs e) {

 listBox1.SelectedIndex =

  SendMessage(listBox1.Handle, LB_FINDSTRINGEXACT, -1, "ball");

}

ListView

Возможно, вы замечали, что в некоторых программах используется элемент ListView с градиентной заливкой. Например, такое оформление интерфейса можно увидеть в списке контактов. Оказывается, совсем не сложно применить такую раскраску в своем приложении. Но для этого надо использовать стиль LVS_GRADIENT, как показано в листинге 4.7.

Листинг 4.7

using System.Runtime.InteropServices;

[DllImport("coredll.dll")]

static extern int SendMessage(IntPtr hwnd, uint msg, int wParam, int lParam);

const int LVS_EX_GRADIENT = 0x20000000;

const int LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1000 + 54;

// Создаем градиентный фон для ListView

private void CreateGradientListView(ListView listView) {

 // Получим дескриптор ListView

 IntPtr hLV = listView.Handle;

 // Устанавливаем расширенный стиль

 SendMessage(hLV, (uint)LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRADIENT);

 // Обновляем вид

 listView.Refresh();

}

private void Form1_Load(object sender, EventArgs e) {

 CreateGradientListView(listView1);

}

Создание кнопки, содержащей изображение

В статье «How to: Create a Custom Image Button Control», которую можно отыскать по адресу msdn2.microsoft.com/en-us/library/ms172532(VS.80).aspx, описывается процесс создания кнопки, которая может содержать в качестве фона любое изображение. В первых версиях .NET Compact Framework кнопку вообще нельзя было сделать цветной, так как не существовало свойства BackColor. Потом данный недостаток был исправлен, но стандартными средствами пока не получится отобразить на кнопке рисунок. С помощью примера, который приводится в статье, можно обойти это ограничение.

Список с расширенными возможностями

В другой статье — «How to: Create an Owner-Drawn List Box», расположенной по адресу msdn2.microsoft.com/en-us/library/ms229679(VS.80).aspx, — описывается создание списка ListBox с расширенными возможностями. В этом примере показано, как можно использовать графику и различные шрифты для отображения элементов списка.

Текстовое поле для ввода чисел

Очень часто программистам необходимо создавать текстовые поля, в которых можно указывать только числа. В статье «How to: Create a Numeric Text Box», которую можно найти по адресу msdn2.microsoft.com/en-us/library/ms229644(VS.80).aspx, рассказывается об одном из таких способов. Прочитав статью, вы поймете, как создавать текстовые поля, допускающие ввод только чисел, минуса, пробела и разделителя десятичных чисел.

Сортировка элементов ListView

Элемент управления ListView в .NET Compact Framework не поддерживает метод Sort, который позволил бы отсортировать элементы списка. В документации MSDN есть статья «How to: Sort ListView Items», в которой рассказывается о том, как решить эту проблему при помощи метода Sort класса ArrayList и интерфейса IComparer.

Использование элемента DateTimePicker

Элемент управления DateTimePicker появился только в последней версии .NET Compact Framework 2.0. В документации MSDN есть ряд замечательных статей о том, как создать собственный элемент DateTimePicker для программ, работающих на платформе .NET Compact Framework 1.0. Стоит ознакомиться со статьями «Adding Designer Support to the .NET Compact Framework DateTimePicker Control» и «Microsoft .NET Compact Framework-based DateTimePicker Control».

Глава 5

Мышь и клавиатура

Мышь и стилус

Взаимодействие с программой пользователь осуществляет с помощью стилуса или аппаратных кнопок на самом устройстве. А где же мышь и клавиатура? Ну, предположим, что клавиатуру можно заменить ее виртуальным аналогом на экране КПК. Она имеет практически ту же функциональность, что и настоящая клавиатура. Кроме того, следует помнить, что существуют КПК с настоящей, хоть и маленькой, клавиатурой. Что же касается мыши, то ее роль с успехом выполняет стилус.

Но стоит заметить, что у стилуса нет возможности эмулировать нажатие правой кнопки мыши. Когда пользователь применяет стилус, то генерируются события MouseDown, MouseMove, MouseUp и Click. Первые три события могут сообщить о позиции курсора, как и события из настольной версии Windows.

Курсоры

Так как пользователь при работе использует стилус, то Windows Mobile не отображает на экране устройства стандартную стрелку курсора. Предполагается, что пользователь может самостоятельно попасть острым концом стилуса в маленькую кнопку или другой элемент. Но у мобильных систем курсоры все же есть. Первый из них является аналогом песочных часов в настольной версии Windows и выглядит как анимированный круг с разноцветными секторами. Второй курсор можно увидеть при вызове контекстного меню. Он выглядит как множество маленьких красных кружков, которые постепенно появляются вдоль воображаемой окружности.

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

При выполнении длительных ресурсоемких операций нужно показать пользователю, что устройство работает, а не зависло. Лучше всего вывести на экран устройства курсор ожидания. В карманных компьютерах в качестве такого курсора используются не песочные часы, как в настольных компьютерах, а анимированный разноцветный круг, Установить данный тип курсора в приложении очень просто, что иллюстрирует фрагмент кода, приведенный в листинге 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). Если протестировать пример на устройстве с настоящей клавиатурой, то можно заметить, что приложение правильно обрабатывает нажатие на встроенные клавиши со стрелками.

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.