- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Программирование КПК и смартфонов на .NET Compact Framework - Александр Климов
Шрифт:
Интервал:
Закладка:
Создание приложения для смартфона
В главе 7 уже создавался проект, рассчитанный на работу с смартфоном. Мы тогда немного забежали вперед. Настало время вернуться к истокам и начать изучение с самого начала.
Запустите Visual Studio 2005 для создания нового проекта. Надо выбрать тип проекта Smartphone 2003. Для этого типа применяется только .NET Compact Framework 1.0. Сразу после создания надо запустить эмулятор при помощи команды меню Debug►Start Debugging. На экране будет отображено окно Deploy со списком имеющихся эмуляторов. Нужно выбрать эмулятор и нажать кнопке Deploy. Если все прошло нормально, то эмулятор будет загружен с пустой формой. В первом упражнении надо лишь проверить возможности работы с эмулятором. Поэтому надо закрыть приложение (но не эмулятор!) и продолжить работу с приложением в режиме проектирования.
ПРИМЕЧАНИЕТак как у приложений для смартфонов нет кнопки закрытия окна, то непонятно, как можно закрыть программу. Можно нажать кнопку Stop Debugging. Если на эмуляторе нажать кнопку с красным телефоном, то окно программы будет свернуто, а не закрыто, и все равно придется воспользоваться первым способом для закрытия приложения.
Создание меню
Практически все программы для смартфонов работают при помощи команд меню. Поэтому надо получить базовые навыки работы с этим элементом управления. В режиме проектирования формы следует щелкнуть мышью в левой части голубой полоски, которая расположена в нижней части экрана. Эта полоска является элементом меню, которое вызывается нажатием кнопки Soft Key1, находящейся под экраном. На форме появится текст Type Here (рис. 9.1).
Рис. 9.1. Создание меню
В этой области нужно ввести слово Привет и нажать клавишу Enter. Введенный текст появится в левой части формы, и будет активирована Soft Key 2 с той же надписью Type Here. В этой области нужно ввести слово Закрыть. Теперь можно вводить текст для подменю. Новый пункт меню получит заголовок Выход. Перед словом Выход появится единица. Среда разработки Visual Studio 2005 автоматически вставляет цифры в создаваемое меню. Эти цифры являются номерами кнопок-клавиш телефонов. С помощью этой подсказки пользователь может быстро активировать нужный пункт меню нажатием соответствующей кнопки (рис. 9.2).
Рис. 9.2. Создание подменю
Теперь нужно перейти на форму и дважды щелкнуть на пункте созданного меню Выход. В результате будет открыт редактор кода с заготовкой функции menuItem3_Click. Ее код приведен в листинге 9.1
Листинг 9.1private void menuItem3_Click(object sender, EventArgs e) {
this.Close();
}
После запуска приложения следует нажать правую серую кнопку под экраном. При этом будет активирована правая часть меню и появится пункт 1 Выход. Для выполнения этой команды можно нажать клавишу 1 или большую кнопку в центре телефона, которая выполняет функцию клавиши подтверждения. Если все было сделано правильно, то приложение закроется. Итак, только что мы создали приложение для смартфона, добавили в него меню, запустили приложение и закрыли его.
В отношении меню приложения для смартфонов установлено специальное правило. Клавиша Left Softkey может иметь только один пункт меню, а клавиша Right Softkey может иметь разветвленное меню. Любопытно отметить, что при попытке создания подменю для левой клавиши предыдущая версия среды разработки Visual Studio 2003 выводила ошибку. Теперь такой ошибки не выводится, и, теоретически, ничто не мешает нарушить установившуюся традицию. Например, при использовании примеров для смартфонов под управлением Windows Mobile 5.0 программист может создавать вложенные меню для левой кнопки.
Элементы управления
Так как пользователь лишен возможности пользоваться стилусом, то многие элементы управления смартфонами не поддерживаются.
В этом легко убедиться, достаточно лишь взглянуть на панель инструментов проекта для смарфтонов, чтобы увидеть, как резко уменьшилось число поддерживаемых объектов.
Поначалу количество не поддерживаемых элементов управления приводит в замешательство. Как же писать приложения, если смартфон не поддерживает такой распространенный элемент, как кнопка? Так как в смартфонах не используется стилус, то применение кнопок просто бессмысленно. Управление объектами в приложениях для смартфонов осуществляется при помощи реальных кнопок-клавиш.
Кроме стандартных кнопок с цифрами у смартфона имеются еще так называемые softkey-клавиши. Это две дополнительные кнопки под экраном, которые выполняют очень важные функции в приложениях. Именно с помощью этих кнопок осуществляется работа с меню.
Также надо помнить, что внешний вид элементов управления зачастую отличается от вида аналогичных элементов на КПК. Возьмем, к примеру, текстовое поле. Текстовое поле TextBox в смартфонах не имеет окантовки. Она появляется только в том случае, когда текстовое поле получает фокус. В этом нетрудно убедиться на простом примере.
Следует добавить на форму два текстовых поля. Одно из них автоматически получит фокус при загрузке приложения (рис. 9.3). Если с помощью клавиши навигации перейти на второе поле, то оно получит окантовку, а у первого поля, соответственно, окантовка пропадет.
Рис. 9.3. Окантовка у первого текстового поля, имеющего фокус
Чтобы не путать текстовые поля с элементами Label, в надписях используют более жирный текст. На форме надо расположить два элемента Label. На рис. 9.4 видно, что строки label1 и label2 выделяются более жирным начертанием текста. На этом различия не заканчиваются.
Рис. 9.4. Различия внешнего вида некоторых элементов управления
Стоит расположить на форме еще одно текстовое поле и для его свойства Multiline указать значение True. В поле надо ввести какой-нибудь длинный текст. После запуска проекта будет видно, что текстовое поле не в состоянии уместить весь текст, а показывает только несколько первых слов с завершающим маленьким треугольником.
Если установить фокус ввода на этом текстовом поле и нажать кнопку Enter, то текст полностью будет показан в новом окне (рис. 9.5).
Рис. 9.5. Полный текст в текстовом поле
Пользователь может самостоятельно дописать слова песни в новом окне и выбрать команду Done или отказаться от подтверждения ввода с помощью команды Cancel.
То же самое касается и элемента ComboBox. Данный элемент получает окантовку при получении фокуса и отображает уже два треугольника. Чтобы раскрыть список элементов, хранящихся в комбинированном окне, необходимо сначала установить фокус и нажать на кнопку Enter. При этом будет открыто новое окно, в котором с помощью клавиш навигации пользователь может выбрать необходимый элемент и выполнить команду меню Done.
Существует также альтернативный способ выбора элемента из ComboBox. Для этого нужно опять установить фокус на комбинированном окне и прокручивать имеющиеся записи при помощи кнопок навигации Влево или Вправо.
Режимы ввода
Первые модели сотовых телефонов для отправки сообщений имели только один режима ввода. Пользователь нажимал на кнопки телефона в определенном порядке, вводя тот или иной символ. Затем появились другие режимы. В частности, сейчас поддерживается числовой режим, так называемый режим T9 и символьный режим. Поначалу библиотека .NET Compact Framework не имела поддержки режимов ввода. Поэтому для установки необходимого режима программистам приходилось использовать механизм P/Invoke для вызова функций API, как показано в листинге 9.2.
Листинг 9.2[DllImport("coredll.dll", EntryPoint = "SendMessage")]
private static extern uint SendMessage(IntPtr hWnd, uint msg,
uint wParam, uint lParam);
// Сообщение для режима ввода
const uint EM_SETINPUTMODE = 0x00DE;
// Перечисление режимов ввода
public enum InputModeAPI {
Spell = 0,
T9 = 1,
Numbers = 2,
Text = 3
}
public static void SetInputMode(Control ctrl, InputModeAPI mode) {
SendMessage(ctrl.Handle, EM_SETINPUTMODE, 0, (uint)mode);
}
private void mnuT9_Click(object sender, EventArgs e) {
SetInputMode(textBox3, InputModeAPI.T9);
}
private void mnuSpell_Click(object sender, EventArgs e) {
SetInputMode(textBox3, InputModeAPI.Spell);

