windows phone 8: Обзор возможностей ( часть 1)

90
Windows Phone 8: Обзор возможностей (часть 1) Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина [email protected]

Upload: baina

Post on 23-Feb-2016

68 views

Category:

Documents


0 download

DESCRIPTION

Windows Phone 8: Обзор возможностей ( часть 1). Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина [email protected]. Конкурс приложений для Windows Phone. http://wp8.promorc.com. Содержание. «Живые» плитки в Windows Phone 8 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone 8: Обзор возможностей (часть 1)

Сергей БайдачныйСпециалист по разработке программного обеспечения

Майкрософт Украина[email protected]

Page 2: Windows Phone 8:  Обзор возможностей  ( часть 1)

Конкурс приложений для Windows Phone

http://wp8.promorc.com

Page 3: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Содержание• «Живые» плитки в Windows Phone 8• Интеграция с экраном блокировки• Работа с хранилищами данных• «Глубокие» ссылки и ассоциации с

файлами

Page 4: Windows Phone 8:  Обзор возможностей  ( часть 1)

«Живые» плитки в Windows Phone 8

Page 5: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Персонализация устройства• Они все одинаковые….

Page 6: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Flip Tile Шаблон (TemplateFlip, FlipTileData)

medium: 336x336small: 159x159

wide: 691x336

Page 7: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Cycle Tile Шаблон (TemplateCycle, CycleTileData)

medium: 336x336small: 159x159

wide center crops to medium

wide: 691x336

Page 8: Windows Phone 8:  Обзор возможностей  ( часть 1)

Iconic Tile Шаблон (TemplateIconic, IconicTileData)

medium: 202x202small: 110x110

white with transparency only

crop tight on horizontal

Page 9: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Новые типы плиток• Демонстрация

Page 10: Windows Phone 8:  Обзор возможностей  ( часть 1)

Работа старых приложений

WP7.5 поддерживают маленькие иконки на WP8!

От разработчика ничего не требуется Происходит автоматическое масштабирование

Page 11: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Работа старых приложений• Вы можете использовать Reflection для

доступа к новым классам на платформе WP 8

• http://mangopollo.codeplex.com - пример библиотеки для WP 7.x по расширению возможности плиток

Page 12: Windows Phone 8:  Обзор возможностей  ( часть 1)

Интеграция с экраном

блокировки

Page 13: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Интеграция с экраном блокировки

Отображение контента из приложения на экране блокировки

Отображение иконки и счетчика (когда счетчик >0)

Работает вне зависимости от того, прикреплена ли плитка на основной экран

Задается в манифесте с помощью Extensions элемента

Page 14: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Обновление заставки

Пользователь может выбрать провайдера изображений в “lock screen” настройках

?WallpaperSettings=1

Приложение может запросить пользователя на право быть провайдером картинок

Предоставляйте DefaultLockScreen.jpg в корне XAP

Задается в манифесте с помощью Extensions элемента

Page 15: Windows Phone 8:  Обзор возможностей  ( часть 1)

Работа с хранилищами данных

Page 16: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

StorageFile и StorageFolder• Простой способ взаимодействия с

директориями и файлами• Используется в следующих случаях:

– Доступ через InstalledLocation (в текущем объекте типа Package) к директории приложения

– Доступ к локальной директории приложения, предназначенной для хранения файлов, изолированных от других приложений (LocalFolder)

– Доступ к специальным директориям (в LocalFolder)• ISETool.exe – утилита для работы с

директориями приложения в устройстве

Page 17: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Расширена работа с Media Library• Добавление и удаление музыки

– SaveSong и Delete• Получение абсолютного пути к элементу• Данные хранятся как в памяти телефона,

так и на внешних SD картах

Page 18: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Работа с данными на SD карте• Приложение должно задекларировать

эту возможность• Работа осуществляется только с

ассоциированными с приложением файлами

• Дополнительный набор классов:– ExternalStorageDevice– ExternalStorageFile– ExternalStorageFolder

Page 19: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Интеграция с контактами• Приложения в Windows Phone 8 могут

создавать свои группы контактов• Контакты приложения интегрируются в

стандартный Contact Hub• К другим группам контактов приложение

имеет доступ только на чтение (как и в WP 7.x)

Page 20: Windows Phone 8:  Обзор возможностей  ( часть 1)

«Глубокие» ссылки и ассоциации с файлами

Page 21: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Немного о классе Launcher• Пример запуска страницы сайта• Пример запуска внешнего приложения

– ms-settings-lock:• Передача файла

private async void LauchSomething(){ StorageFolder local = ApplicationData.Current.LocalFolder;  StorageFile bqfile = await local.GetFileAsync("myfile.myex");  bool b=await Launcher.LaunchFileAsync(bqfile);}

Page 22: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Ассоциация задана

Launch URI: skype:call?5551234

Page 23: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Нет приложений

Page 24: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

2+ приложения

Page 25: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Создание ссылок• Добавление элементов в манифест

<Extensions> <Protocol Name="myprotocol" NavUriFragment="encodedLaunchUri=%s" TaskID="_default"/></Extensions>

Page 26: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Создание ассоциации: иконки• Почта, браузер,

офис• Размеры

– Small: 33px– Medium: 69px– Large: 176px

Page 27: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Запуск приложений через Proximity• Запуск приложения на удаленном

устройствеProximityDevice device = ProximityDevice.GetDefault();

if (device != null) { long Id = device.PublishUriMessage( new System.Uri("contoso:NewProducts")); }

Page 28: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Вопросы?

Page 29: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone 8: Обзор возможностей (часть 2)

Сергей БайдачныйСпециалист по разработке программного обеспечения

Майкрософт Украина[email protected]

Page 30: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Содержание• Карты и местоположение• Распознавание голоса• Кошелек• Коммуникации• И другое…..

Page 31: Windows Phone 8:  Обзор возможностей  ( часть 1)

Определение местоположения

Page 32: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Доступно из C# и C++Позволяет определять положение через интервал времени или базируясь на перемещенияхПозволяет задать точность в метрах и времяПозволяет задать максимальный «возраст» данных

.Net APIs

Windows RuntimeAPIs

Предустановленная точностьПроблемы с кешированиемТолько из управляемых приложенийТребует вызова Start и Stop

A-GPS

Wi-fi

Cell

Доступные APIs

Page 33: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Определение позицииpublic async Task<Geocoordinate> GetSinglePositionAsync()

{

Geolocator geolocator = new Geolocator(); 

geolocator.DesiredAccuracyInMeters = 10;

Geoposition geoposition = await geolocator.GetGeopositionAsync(

TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(30));

 

return geoposition.Coordinate;

}

Page 34: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Отслеживание измененийprivate Geolocator trackingGeolocator;

private TypedEventHandler<Geolocator, PositionChangedEventArgs> positionChangedHandler;

 

public void StartTracking()

{

trackingGeolocator = new Geolocator();

trackingGeolocator.MovementThreshold = 100;

// или

trackingGeolocator.ReportInterval = (uint)TimeSpan.FromSeconds(30).TotalMilliseconds;

  positionChangedHandler = (geolocator, eventArgs) => {};

trackingGeolocator.PositionChanged += positionChangedHandler;

}

public void StopTracking()

{

trackingGeolocator.PositionChanged -= positionChangedHandler;

}

Page 35: Windows Phone 8:  Обзор возможностей  ( часть 1)

Работа с картами

Page 36: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Windows Phone 8 Map Control• Nokia Mapping Data

110+ стран, векторные карты, 3D объекты, несколько режимов

• Offline MapsЗагружаются пользователем, MapsDownloader задача доступна для разработчика

• Map ControlУдобное взаимодействие, быстрая прорисовка, поворот

• Отображение направленияВычисляется через Maps Services

Page 37: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Windows Phone Maps Services

• Geocoding Latitude,Longitude to Address

• Reverse Geocoding Address to Latitude,Longitude

• RoutingRouteQuery, Route, RouteLeg, RouteManeuver

Page 38: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Part of Windows Phone ToolkitMapsUserControlPushPinToGeoCoordinate

Map Control &ServiceAPIs

Map ToolkitExtensions

ID_CAP_MAP and ID_CAP_LOCATION

Developer Token assigned through Windows Phone Developer Center

.Net

Windows Phone Map and Services API

Page 39: Windows Phone 8:  Обзор возможностей  ( часть 1)

Местоположение в фоне

Page 40: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Настройка приложения• App manifest:<defaultTask Name="_default" NavigationPage="MainPage.xaml" >

    <BackgroundExecution>

      <ExecutionType Name="LocationTracking" />

    </BackgroundExecution >

</defaultTask>

Page 41: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Ограничения

• Только в XAML приложениях

• Только одно приложение может быть запущено

• Ограничения по доступу к ресурсам

Page 42: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Использование ресурсов• CPU затраты на уровне10%• Доступ к

Location Audio\Speech Network Storage Sensors

• Нет доступа к камере и микрофону• ShellToast и ShellTile.Update

Page 43: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Контроль со стороны пользователя• ID_CAP_LOCATION

• Пользователь может закрыть приложение

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

Page 44: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Деактивация• Приложение работает в фоне пока:

• Приложение отслеживает местоположение• Пользователь не запретил Location Services• Не прошло 4 часа без перехода из фона• Battery Saver не включена• Другое приложение не переходит в фон• Достаточно памяти

• Предоставляется информация о причине деактивации

• Нотифицируйте пользователя

Page 45: Windows Phone 8:  Обзор возможностей  ( часть 1)

Распознавание голоса

Page 46: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Управление голосом• Более гибкая настройка приложения для

управления голосом• Поддержка API по распознаванию голоса• Поддержка API по синтезу голоса

Page 47: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Синтез голоса

async private void ButtonTTS_Click(object sender, RoutedEventArgs e){ SpeechSynthesizer synth = new SpeechSynthesizer(); await synth.SpeakTextAsync( "You have a meeting with Peter in 15 minutes.");}

Всего две строки кода:

Page 48: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Распознавание голосаasync private void ButtonSR_Click(object sender, RoutedEventArgs e){ SpeechRecognizer reco = new SpeechRecognizer();

// Use the default short message dictation grammar SpeechRecognitionResult recoResult = await reco.RecognizeAsync();

// Do something with the recognition result

MessageBox.Show(string.Format("You said {0}.", recoResult.Text));}

Page 49: Windows Phone 8:  Обзор возможностей  ( часть 1)

Кошелек

Page 50: Windows Phone 8:  Обзор возможностей  ( часть 1)
Page 51: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

NFC и кошелек• Быстрый механизм передачи данных

между приложениями (без сложного установления доверительных отношений)

• Поддержка безопасных механизмов передачи

• Хранение кредиток, скидок и др. в одном месте

• Возможность ассоциации карты с приложением

• Поддержка безопасности на уровне pin

Page 52: Windows Phone 8:  Обзор возможностей  ( часть 1)
Page 53: Windows Phone 8:  Обзор возможностей  ( часть 1)

Object Model

WalletTransactionItemBase

PaymentInstrumentID_CAP_WALLET_PAYMENTINSTRUMENTSID_CAP_WALLET

WalletTransactionItemID_CAP_WALLET

DealID_CAP_WALLET

WalletItem

Page 54: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

App <-> Item Linking

Wallet Item #1

Wallet Item #2

Wallet Item #3

Wallet Item #4

Wallet Item #5

App A

App B

Page 55: Windows Phone 8:  Обзор возможностей  ( часть 1)

Коммуникации

Page 56: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

.SocketsTCP/UDP, No

Listening

.WebRequest

HTTP

.WebClientHTTP

Wrapper, Not Awaitable

System.Net

Windows Phone 7.1

Page 57: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

IXMLHTTPRequest2 (IXHWR)

.SocketsTCP/UDP

.ProximityNFC,

Bluetooth

Windows.Networking

WinsockTCP/UDP

Native

.SocketsTCP/UDP

.WebRequest

HTTP

.WebClientHTTP

Wrapper, Not Awaitable

System.Net

Windows Phone 8

Page 58: Windows Phone 8:  Обзор возможностей  ( часть 1)

Sockets

• Managed Sockets – System.Net.Sockets• TCP & UDP- Socket, Multicast, Listen

• Winsock - winsock2.h, ws2tcpip.h, ….• Winsock API Family; SOCK_STREAM, SOCK_DGRAM

• WinRT – Windows.Networking.Sockets• TCP- StreamSocket• UDP- DatagramSocket

Page 59: Windows Phone 8:  Обзор возможностей  ( часть 1)

Proximity

• Near Field Communication (NFC)• Short range (2-4cm) protocol, low bandwidth (~424 kbit/s)• Acquire connections and exchange small amount of data, bootstrap

WinRT StreamSocket• Allows App->App and App->Device connectivity

• Bluetooth• 0-100m range• WinRT StreamSocket for communication (~2.1 Mbit/s)• Allows App->App and App->Device connectivity

Page 60: Windows Phone 8:  Обзор возможностей  ( часть 1)

HTTP Support

WP8• HTTPWebRequest • WebClient

• IXMLHTTPRequest2

Win8• HTTPWebRequest • HTTPClient

• IXMLHTTPRequest2

Platform

Managed Native

Page 61: Windows Phone 8:  Обзор возможностей  ( часть 1)

И другое…

Page 62: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Новые устройства• Разрешения

– 480 x 800– 768 x 1280– 720 x 1280 (16:9)

Page 63: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Шаринг данных• ShareMediaTask – диалог для шаринга

медиа файлов в социальных сетях по выбору пользователя

Page 64: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Новые элементы управления• LongListSelector

Page 65: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

И еще немного…• Pivot и Panorama как часть платформы• Линзы• Улучшения работы с загрузкой

фотографий• Улучшение работы с камерой• Покупка в приложении• DirectX

Page 66: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Вопросы совместимости• Windows Phone 8 поддерживает quirks

режим, который позволяет запускать старые приложения

• Перекомпиляция старых приложений не всегда приводит к успеху

– Документация содержит информацию о том, что необходимо изменить

Page 67: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Вопросы?

Page 68: Windows Phone 8:  Обзор возможностей  ( часть 1)

C++ при разработке Windows Phone 8

приложенийСергей Байдачный

Специалист по разработке программного обеспечения

Майкрософт Украина[email protected]

Page 69: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Содержание• С++ и Windows Phone• Современный С++• Расширение С++ для Windows 8 и

Windows Phone 8• Немного о DirectX

Page 70: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Две модели приложенийУправляемая• Использование уже

существующих подходов (C#/XAML)

• Большое количество элементов управления

• Поддержка XNA

Нативная• Разработка

приложений на С++• Переносимость

некоторых библиотек и кода с Windows 8

• Повышение производительности игр при утилизации DirectX

Page 71: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Две модели приложений• Допускается встраивание DirectX

компонент в XAML интерфейс• Создание приложений на HTML 5 не

поддерживается, но …

Page 72: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

C++ в Windows Phone 8• Visual C++ 2012• Тот же С++, что и в Windows 8• Новые возможности C++11

RValue references Forward declared enums Bidirectional fences

static_assert Alignment Data-dependency ordering

Auto Standard-layout and trivial types exception_ptr

Trailing return types Extended friend declarations Thread-local storage

Lambdas Local and unnamed types as template arguments __func__

Decltype Range-based for-loop C99 preprocessor

Right angle brackets override and final long long

extern templates Minimal GC support

nullptr Atomics

Strongly typed enums Strong compare and exchange

Page 73: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Portable Class Libraries• Одинаковый код• Один проект• Одна сборка• Множество платформ

Page 74: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Portable Class Libraries

Platform-specific

Portable /shareable

Platform-specific

Windows Phone app Windows Store app

Page 75: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Что же можно делать на С++

NetworkingProximityIn-App PurchaseSensorsLocationFile SystemCore app modelThreading

Page 76: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

C++ reimaginedC++ 11

autoshared_ptrdecltype. . . . .http://msdn.microsoft.com/en-us/library/hh567368.aspx

C++/CX

Улучшение производительности С++ разработчика на платформе Windows 8 и Windows Phone 8

Page 77: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

C++ Component Extensions (C++/CX)Key Bindings Feature Summary1. Data Types

ref class Reference typevalue class Value typeinterface class Interface

property Property with get/set

event “Delegate property” with add/remove/raise

delegate Type-safe function pointergeneric Type-safe generics

2. Allocation gcnew Garbage-collected allocationref new Reference-counted allocation

3. Pointer & Reference

^ Strong pointer (“hat” or “handle”)% Strong reference

Page 78: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Создание классов Windows Runtime• Defining

public ref class Person { public: Person(String^ name, String^ email); void Greet(Person^ other); internal: ~Person(); void SetPassword(const std::wstring& passwd);};

• UsingPerson^ p = ref new Person(“John Surname”);p->Greet(ref new Person(“Jim Surename”);

Page 79: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Работа с памятью• Handle (^) is a pointer to a Windows Runtime object

for which the compiler performs automatic reference counting

• ref new instantiates or activates a Windows Runtime class.

Person^ p;{ Person^ p2 = ref new Person(); // refcount = 1 p2->Name = “John”; // refcount = 1 p = p2; // refcount = 2} // refcount = 1p = nullptr; // refcount = 0; ~Person()

Page 80: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Интерфейсы• Inheriting

public interface class IFeline : IAnimal { void Scratch();};

• Implementingref class Cat : IFeline { public: virtual void Play(); virtual void Scratch();};

Definingpublic interface class IAnimal { void Play();};

UsingIAnimal^ animal = ref new Cat();animal->Play();

Page 81: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Свойства• Defining

– Trivial properties (with private backing store)public: property String^ Name;

– User defined propertiespublic: property Person^ Sibling { Person^ get() { InitSiblings(); return _sibling; } void set(Person^ value) { _sibling = value; NotifySibling(); } }private: Person^ _sibling;

• UsingPerson^ p = ref new Person(“John”);p->Sibling = ref new Person(p->Name);

Page 82: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Делегаты• Declaring: like a function

public delegate void PropertyChanged( String^ propName, String^ propValue );

• Instantiating: like a class– From lambda:

auto p = ref new PropertyChanged( [](String^ pn, String^ pv) { cout << pn << ” = “ << pv; } );

– From free-functionauto p = ref new PropertyChanged( UIPropertyChanged );

– From class-memberauto p = ref new PropertyChanged( this, MainPage::OnPropertyChanged );

• Invoking: like a functionp( “Visible”, false );

Page 83: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

События• Defining

– Trivial event (with private backing store)public: event PropertyChanged^ OnPropertyChanged;

– User defined eventpublic: event PropertyChanged^ OnNetworkChanged { EventRegistrationToken add(PropertyChanged^); void remove(EventRegistrationToken t); void raise(String^, String^);}

• Using– Subscribing

person->OnPropertyChanged += propertyChangedDelegate;auto token = person->OnPropertyChanged::add(propertyChangedDelegate);

– Unsubscribingperson->OnPropertyChanged -= token;person->OnPropertyChanged::remove(token);

Page 84: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Исключения• Signaling an error case: throw

exception– throw ref new InvalidArgumentException();– throw ref new COMException(E_*);

• Handling an error case: catch exception– try { … } catch (OutOfMemoryException^

ex) { … }– Access HRESULT value via ex->HResult

• Notes on exceptions:– catch (Platform::Exception^) catches all

WinRT exceptions– Exceptions don’t carry any state and don’t

travel across modules– Deriving from an exception class is ill-

formed

HRESULT ExceptionE_OUTOFMEMORY

OutOfMemoryException

E_INVALIDARG InvalidArgumentException

E_NOINTERFACE InvalidCastException

E_POINTER NullReferenceException

E_NOTIMPL NotImplementedException

E_ACCESSDENIED

AccessDeniedException

E_FAIL FailureExceptionE_BOUNDS OutOfBoundsExcep

tionE_CHANGED_STATE

ChangedStateException

REGDB_E_CLASSNOTREG

ClassNotRegisteredException

E_DISCONNECTED

DisconnectedException

E_ABORT OperationCanceledException

Page 85: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Обобщенные типы• Implementing

ref class PairStringUri: IPair<String^, Uri^> {public:

property String^ First;

property Uri^ Second;};

Defininggeneric<typename T, typename U> public interface class IPair {

property T First;property U Second;

};

UsingIPair<String^, Uri^>^ uri = GetUri();auto first = uri->First; // type is String^auto second = uri->Second; // type is Uri^

Page 86: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Частичные типы• Partial class definition

private partial ref class MainPage: UserControl, IComponentConnector{public: void InitializeComponent(); void Connect() { btn1->Click += ref new EventHandler(this, &MainPage::Button_Click); }};

• Class definitionref class MainPage{public: MainPage() { InitializeComponent(); } void Button_Click(Object^ sender, RoutedEventArgs^ e);};

Page 87: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Vector and ObservableVector• Instantiating

using namespace Platform;Vector<String^>^ items = ref new Vector<String^>();

• Adding elementsitems->Append(“Hello”);

• Returning a read-only view of the vectorIVectorView<String^>^ GetItems () { return items->GetView();}

• Getting notification for changesitems->VectorChanged += ref new VectorChangedEventHandler<String^> (this, &MyClass::VectorChanged);

Page 88: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Map and ObservableMap• Defining

using namespace Platform;Map<String^, Uri^> favorites = ref new Map<String^, Uri^>();

• Adding elementsfavorites->Insert(“MSDN”, ref new Uri(“http://msdn.com”));

• Checking and removing elementsif (favorites->HasKey(“MSDN”)) favorites->Remove(“MSDN”);

Page 89: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Немного о DirectX• C++/DirectX – поддержка нативных

приложений• XNA продолжает поддерживаться• Поддержка DirectX 11.1, но уровень 9.3• Возможность интеграции XAML и DirectX

Page 90: Windows Phone 8:  Обзор возможностей  ( часть 1)

Windows Phone

Вопросы?