Metro in c++

advertisement
Windows 8
Hot or Not
Piotr Włodek
Agenda
Metro
Motion
Charms
Contracts
App Execution
Environment
WinRT
Summary
Metro UI
Metro Design
Metro Design
• Typography
• Motion
• Content not Chrome
Photoshop METRO’ified
WIN 8 LOOK’N’FEEL
Application layout
• Display orientation
– Landscape
– Portrait
– Flipped
• Application layout
– Fullscreen
– Fill
– Snapped
Application layout
Fullscreen view (100 %)
Application layout
Snapped view (25 %)
Fill view (75 %)
Notification
• Tile notification (live tiles)
– Square or wide
– Badge (number or glypth)
Notification
• Toast notification
– Standard toast, 7 sec (e-mail, IM, social media)
– Long duration toast, 30 sec (person waiting)
Notification
• Push notification
– Windows Push Notification Services (WNS)
Windows Charms
•
•
•
•
•
Search
Share
Start
Devices
Settings
Contracts
• Web of Applications
– Sharing Contract
– Picker Contract
– Search Contract
– More!
What is Windows Runtime ?
•
•
•
•
•
•
OO API for writing Metro style applications
Written in native C++
Tuned for performance
Supports type reflection through metadata
Supports many languages though projections
Part of Windows, build each time OS is
compiled
Windows Runtime
Language Support
• 29 apps in total
• In Dev Preview:
– 75% JS,
– 17% C#,
– 8% C++
C#
XAML
5 apps
JS HTML
22 apps
C++
DirectX
2 apps
Is .NET dead ?
.NET Framework 4.5
• Preinstalled in Windows 8
• No support for Windows XP
• WPF 4.5
– Ribbon out of the box
– Binding to static properties
– Collections on non-UI thread
– Async validation (INotifyDataErrorInfo)
– Huge VirtualizingStackPanel perf improvements
WinRT vs Silverlight
• Type comparison
1582
SL5
607
WinRT
4396
WinRT vs Silverlight
• Member
comparison
4222
WinRT
SL5
10375
651
.NET Metro Profile
•
•
•
•
•
•
•
Subset of Client Profile
No Remoting
No System.Data
No System.Web
No server side WCF
No private reflection, no Emit
Some API only in async version
DEMO – METRO IN C++
What is included in WinRT ?
Windows::UI
• Comparable set
to Silverlight
• Lots of new
controls:
–
–
–
–
–
–
WebView
MediaElement
MediaPlayer
GridView
FlipView
AppBar
Windows::UI:Input
• Gone
– Mouse events
– Touch events
– Stylus events
• Still There
– Keyboard events
– Manipulation events
• New
– Pointer events
– Tap, DoubleTab, RightTap
Windows::UI::Media::Animations::Transition
• Transitions for UIElement, Panel,
ContentControl, and ItemsControl
– Entrance Transition
– Reposition Transition
– Reorder Transition
– AddDelete Transitions
– Content Transitions
Windows::Storage::Pickers
• 2 types of
pickers:
– File Picker
– Folder Picker
• Your app can
show its content
in either of these
pickers
DEMO – METRO IN C#
Custom WinRT objects
• Share objects across all languages
• Languages
– C++/CX : speed
– C#/VB : Ease of use
• Restrictions apply
– Sealed classes
– Exposed through an interface
– Public API can only expose primitive types and
WinRT objects
DEMO – WINRT
OBJECT IN C#
Application Execution Environment
Your App
App.exe
WinRT
APIs
Direct API calls
OS
Brokered
API calls
App Container +
Signed & verified code
Broker
Process state transition
Running
App
Suspending
Resuming
Terminated
App
Suspended
App
What is not supported ? 
No { DynamicResource }
Poor WritableBitmap
Poor data binding
No default implementation for
IObservableVector<T>
• 2 manifestations of INPC
• No overlapping windows (no
MessageBox)
•
•
•
•
Common pitfals 
• Code behind namespaces
• XAML namespaces
• DP
•xmlns:views=”using:My.Custom.Views”
Custom controls and styles
• ObservableCollection
Getting Windows 8 DP
• Windows 8 Developer Preview with
developer tools English, 64-bit (x64)
– 4.8 GB – DVD dual layer or pendrive 8GB
– VS 2011 Express
– Blend 5 Preview (Works only with HTML5/CSS)
• Windows 8 Developer Preview English, 64-bit
• Windows 8 Developer Preview English, 32-bit
• Visual Studio 2011 Ultimate Dev Prev
Reference
• MSDN Metro Guide:
– http://msdn.microsoft.com/en-us/windows/apps
• Building Windows 8 Blog:
– http://blogs.msdn.com/b/b8/
• BUILD Videos:
– http://www.buildwindows.com/
• WinRT Transitions
– http://bit.ly/vZU4fd
• WinRT vs SL5 comparison
– http://bit.ly/spEtNE
Piotr Włodek



mail:
blog:
twitter:
piotr.wlodek@gmail.com
http://pwlodek.blogspot.com
@pwlodek
Download