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

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

Жанры

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

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

Шрифт:

 mnuPaint.Checked = !mnuPaint.Checked;

 mnuLines.Checked = !mnuLines.Checked;

}

private void mnuGreenPen_Click(object sender, EventArgs e) {

 myPen.Color = Color.Green;

}

private void mnuRedPen_Click(object sender, EventArgs e) {

 myPen.Color = Color.Red;

}

На рис. 6.9 показано, как выглядит созданный графический редактор в работе.

Рис. 6.9.

Простейший графический редактор

Дополнительные материалы

Если нужно ознакомиться с дополнительными материалами по программированию графики, то стоит обратиться к статьям документации MSDN. Например, в статье «How to: Display a Gradient Fill» рассказывается том, как раскрасить элемент градиентной заливкой. Также в документации MSDN имеется статья уже известного нам Алекса Яхнина «Creating a Microsoft .NET Compact Framework-based Animation Control», в которой рассказывается о создании элемента управления, способного воспроизводить анимированное изображение, создавая его на основе серии картинок. Тем, кто планирует писать приложения для устройств под управлением Windows Mobile 5.0, стоит обратить внимание на технологию Windows Mobile DirectX and Direct3D, которая дает дополнительные возможности для работы с графикой.

Глава 7

Разработка приложений

Активация и деактивация формы

Модель выполнения программ на карманном компьютере отличается от поведения программ, работающих на обычном персональном компьютере. Например, на мобильных компьютерах используется один экземпляр запущенной программы. Аналогом подобного поведения на настольных компьютерах является почтовая программа Outlook Express, которая всегда запускается в одном экземпляре. При попытке запуска программы она просто активируется (если уже была запущена). При этом вторая копия программы не запускается.

При создании приложения для КПК разработчику не придется прилагать никаких усилий для реализации подобного поведения. Среда выполнения .NET Compact Framework сама позаботится о том, чтобы запускался только один экземпляр программы. Следует помнить, что пользователь не должен сам закрывать программу. При запуске новой программы ее окно просто загораживает предыдущую программу.

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

Form.Deactivate
и
Form.Activated
. В листинге 7.1 приведен пример работы с этими событиями.

Листинг 7.1

private void Form1_Activated(object sender, EventArgs e) {

 // Здесь ваш код для восстановления связей с портами и т.д.

 lblInfo.Text = "Приложение активировано";

}

private void Form1_Deactivate(object sender, EventArgs e) {

 // Здесь ваш код для освобождения ресурсов

 lblInfo.Text = "Приложение деактивировано";

}

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

Deactivate
.

Закрыть

или свернуть окно

Закрыть или свернуть — вот в чем вопрос. Компания Microsoft предложила для мобильных приложений модель поведения программ, отличающую от принятой в настольных компьютерах. Когда пользователь щелкает на кнопке закрытия, то на самом деле окно программы не закрывается, а сворачивается. Для пользователей подобное поведение приложений кажется странным, поэтому некоторые разработчики создавали программы, которые позволяли закрывать приложения одним нажатием стилуса. Популярность таких программ говорит о том, что не всем пользователям понравилось поведение приложений, которые отнимают ресурсы у системы. Но сейчас не нужно обсуждать целесообразность такого подхода к закрытию программ. Разработчик может создать приложение, которое позволит выбрать вариант закрытия приложения. Пользователь может нажать кнопку закрытия, чтобы просто свернуть окно, либо выполнить команду меню

Выход
, чтобы действительно закрыть приложение.

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

MinimizeBox
при отладке значение
False
, что поможет избавиться от этой проблемы. Но перед окончательным релизом программы надо все же поставить значение
True
. Однако полагаться на свою память не стоит. Гораздо проще воспользоваться условной компиляцией.

При создании приложения надо использовать несколько строчек кода в конструкторе формы сразу после вызова процедуры

InitializeComponent
, как показано в листинге 7.2.

Листинг 7.2

#if DEBUG

 MinimizeBox = false;

#else

 MinimizeBox = true;

#endif

Этот код стоит вынести на панель инструментов (рис. 7.1), что позволит быстро добавлять эту конструкцию в создаваемые приложения. Отныне все примеры в данной книге будут снабжаться этим кодом.

Рис. 7.1. Код условной компиляции на панели инструментов

Пиктограмма приложения

Любая серьезная программа должна иметь собственную пиктограмму. Чтобы указать используемую пиктограмму, надо при помощи команды меню

Project►Properties
открыть диалоговое окно
Property Pages
, выбрать раздел
Application
и указать путь к файлу с пиктограммой в свойстве
Icon
(рис. 7.2).

Рис. 7.2. Добавление пиктограммы для приложения

Создание собственных диалоговых окон

Сложные приложения часто используют несколько форм. Например, во многих программах имеется диалоговое окно

О программе
, в котором отображаются информация о программе, номер версии, сведения об авторе и логотип компании.

Для создания подобных форм хорошо подойдет собственное диалоговое окно. Чтобы отобразить такое окно, используется метод

ShowDialog
. Этот метод делает недоступным родительскую форму, пока диалоговое окно находится на экране. Диалоговое окно может возвращать результат вызова метода
ShowDialog
не только себе, но и родительскому окну.

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

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

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

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

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

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

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

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

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

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