Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework
Что нового в .NET Compact Framework 2.0
Список основных изменений в .NET Compact Framework 2.0 приведен на странице msdn.microsoft.com/netframework/programming/netcf/default.aspx?pull=/library/en-us/dnnetcomp/html/whats_new_netcf2.asp. К основным улучшениям библиотеки .NET Compact Framework 2.0 относятся усовершенствованные возможности создания пользовательского интерфейса, новая мобильная база данных, существенные усовершенствования эмулятора, усиленная поддержка COM Interop и Managed Interfaces для D3D. Библиотека .NET Compact Framework 2.0 расширила существующую функциональность в .NET CF 1.0 новыми возможностями. Также разработчики добавили поддержку новых классов, которые ранее были доступны только в полной .NET Framework. В этой книге обязательно будут рассмотрены наиболее значительные новинки. А сейчас можно лишь упомянуть основные моменты.
Пакет .NET Compact Framework 2.0 в Visual Studio 2005 стал поддерживать новые элементы управления, позволяющие создавать очень сложные приложения без написания громоздкого кода. В частности, появилась поддержка элементов управления MonthCalendar и DateTimePicker, позволяющих создавать интерфейс календаря. Также появился новый элемент для уведомлений Notification. Кроме него разработчики получили доступ к элементам DocumentList и HardwareButton. Более подробно они будут рассматриваться в главе, посвященной элементам управления. Новое свойство ScreenOrientation позволяет без использования неуправляемого кода вращать экран устройства. Кроме того, стало значительно проще создавать собственные элементы управления, как это делается в полной версии .NET Framework.
Элементы пользовательского интерфейса в .NET Compact Framework 2.0 теперь поддерживают присоединение (docking). При перемещении элемента управления к определенной стороне контейнера он всегда заполняет эту сторону контейнера.
Некоторые элементы управления стали поддерживать свойство AutoScaleMode. Свойство AutoScaleMode показывает, как нужно перерисовывать элемент при изменении разрешения экрана. Также формы стали поддерживать свойство AutoScroll.
Помимо этого класс Control теперь поддерживает методы SuspendLayout и ResumeLayout. Также в .NET Compact Framework появилась полноценная поддержка буфера обмена.
Класс Graphics тоже получил новые возможности, и теперь при помощи свойств DpiX и DpiY разработчик может узнать размеры экрана. Помимо этого сейчас можно отображать текст под различными углами при помощи класса LogFont. Также разработчик может создавать перья заданных цвета и размера.
Значительно улучшена работа с растровыми изображениями. Программисты получили новые возможности для создания изображений и сохранения их в файле или потоке. В приложениях стало проще манипулировать изображениями при помощи комбинации методов LockBits и UnlockBits в сочетании с новым классом BitmapData. Приложения, использующие при работе с изображениями неуправляемый код, теперь могут получать дескриптор объекта Bitmap через метод GetHbitmap.
Новые возможности позволяют разрабатывать приложения с использованием управляемого кода для Windows Mobile 5.0 при помощи классов из пространства имен Microsoft.Windows.DirectX. Поддержка DirectX позволяет писать игры с использованием управляемого кода, обеспечивая более быструю разработку приложений, чем при использовании неуправляемого DirectX.
Так как на рынке все чаще стали появляться устройства со встроенной клавиатурой, то в библиотеку .NET Compact Framework 2.0 была введена поддержка клавиатуры.
Также следует отметить, что элементы управления теперь распознают события KeyUp, KeyDown и KeyPress. Объект Form теперь имеет свойство KeyPreview.
Тестировать программы тоже стало намного проще, так как эмулятор в .NET Compact Framework 2.0 подвергся значительной переработке. Перечень функциональных возможностей эмуляторов Pocket PC и смартфонов был расширен, что облегчает создание, проверку и развертывание приложений. Особое внимание было уделено поддержке сетевого взаимодействия. Кроме того, было улучшено быстродействие эмулятора. Появилась поддержка программы ActiveSync, можно работать с общими папками и использовать четыре COM-порта. Также эмулятор стал поддерживать работу с портретным и альбомным режимами отображения. Кроме того, эмулятор теперь эмулирует работу ARM-процессора.
Технология Smart Device CAB Project упростила развертывание мобильных приложений. Эта технология позволяет использовать в визуальном редакторе перемещение файлов, создавать папки и записи в реестре. Теперь создавать CAB-проект для установочного пакета так же просто, как при создании проекта Windows Installer для настольных компьютеров.
Новый компилятор теперь создает еще лучший и более быстрый код. Если в предыдущей версии использовались два JIT-компилятора, то теперь .NET CF 2.0 применяет единый компилятор для всех поддерживаемых процессоров.
В области безопасности добавлена поддержка идентификации NTLM и Kerberos. Также улучшена работа с технологией XML, и в распоряжение программистов поступил новый класс XmlSerialization.
Намного удобнее стало разрабатывать дизайн форм в среде разработки Visual Studio .NET 2005. Процесс создания программы стал еще более наглядным. Программист может создавать собственные элементы управления так же, как и для обычных приложений.
Что нового в Visual Studio .NET 2005
Если у вас уже был опыт программирования под Visual Studio .NET 2003, то вы заметите, что на панели инструментов появились новые элементы управления. Они будут рассматриваться в главе, посвященной элементам управления. При разработке дизайна приложения будет заметно, как Windows Forms Designer помогает выравнивать элементы и предлагает выбрать минимальное расстояние между элементами. Автоматически проявляющиеся линии выравнивания помогают создавать аккуратные интерфейсы за очень короткий срок. Также появилась возможность разработки приложений, которые могут переключаться между портретным и альбомным режимами экрана.
Глава 2
Первое приложение для .NET Compact Framework
Первые шаги
Практика — это самый лучший способ научиться программировать для мобильных устройств под .NET Compact Framework. Чтобы поверить в свои силы, нужно создать простейшее приложение. На его примере можно будет изучить различия между .NET Compact Framework и обычной .NET Framework.
Прежде всего нужно запустить среду разработки Microsoft Visual Studio 2005 и создать новый проект. Первые различия в процессе разработки можно увидеть уже на этой стадии. Если для создания обычных приложений надо было выбрать раздел Windows, то на этот раз необходимо выбрать раздел Smart Device. В этом разделе содержатся подразделы, которые отвечают за создание приложений для КПК, смартфонов и устройств под управлением операционной системы Windows СЕ. Итак, нужно указать язык программирования Visual С#, перейти в раздел Smart Device и выбрать подраздел Pocket PC 2003 (рис. 2.1).
Рис. 2.1. Выбор типа платформы
ПРИМЕЧАНИЕСписок подразделов на рисунке может отличаться от списка подразделов на вашем компьютере. Например, пункты Windows Mobile 5.0 Pocket PC и Windows Mobile 5.0 Smartphone появились после установки соответствующих пакетов SDK.
В выбранном подразделе присутствуют несколько шаблонов для реализации различных задач. Как правило, используется шаблон Device Application. Нужно отметить, что существует еще один похожий шаблон с названием Device Application (1.0). Эти два шаблона различаются применяемой версией .NET Compact Framework. По умолчанию в Visual Studio 2005 используется .NET Compact Framework версии 2.0. Если выделить первый шаблон, то в строке состояния можно увидеть сообщение A project for creating a .NET Compact Framework 2.0 forms application for Pocket PC 2003 and later. В примерах будет использоваться, как правило, версия 2.0, так как она имеет ряд преимуществ.
После того как будет выбран шаблон для приложения, требуется изменить имя проекта. По умолчанию используется название DeviceApplication1, но наше первое приложение получит имя FirstPocketPCApp_CS. После нажатия кнопки OK откроется окно среды разработки с необычным видом формы. Если при программировании программ для настольных компьютеров отображается только форма, то в данном случае на экране будут показаны не только форма, но и внешний вид целевого устройства. При желании разработчик может даже изменить внешний вид карманного компьютера, создав специальные файлы. Если вы предпочитаете работать с классическим видом формы, то можно отключить отображение устройства, оставив на экране только форму. Для этого нужно щелкнуть правой кнопкой мыши на форме и в появившемся контекстном меню выбрать пункт Show Skin. Повторный выбор этого пункта вернет на экран стандартный вид формы.
Обычно в качестве первого примера создается стандартная программа, которая выводит приветствие на экран. На форме надо расположить кнопку Button и элемент Label для отображения надписи. Также потребуется написать код для обработчика события Click созданной кнопки. Этот код приведен в листинге 2.1.