Windows 7 comes with many new features that end users know and love. You’ll want your application to deliver familiar experiences that your users have become accustomed to….so your application stands out for the right reasons.(Build)If your app is going to look comfortable on Windows 7, it needs to have taskbar support, jumplists and thumbnails that are appropriate for it, maybe use taskbar overlays instead of the system tray, echo your progress bar as a taskbar overlay and so on. But you also have an opportunity to add things to your application that take advantage of services provided by Windows 7. So perhaps you would like a Ribbon in your user experience, or to be notified (no more polling!) when the user goes on battery, changes their power personality comes on the network or goes off it, and so on. It would be nice to take advantage of the Restart Manager, which simplifies life for end users and can give you a chance to save unsaved data in the face of a catastrophic failure in your application. Adding these things to your user experience can make your application more considerate, and keep your users happier and more productive. But you don’t want to do it by hand, you want a framework that gives you support for all of this and saves you time and effort.
Windows 7 is a huge release; we focused heavily on fundamentals like performance, graphics, drivers, new shell features, and many other areas. For example, all applications can now integrate with taskbar (for jumplists, progress bar, etc…) or can integrate with Windows 7 libraries or ribbon. Most of these changes are the kind of change that would make your application feel modern, and provide productivity improvements to your users, and the changes would be minor for your app; you can get these types of new light-up with a pretty small amount of work.For those that are more aggressive, or want more differentiation, taking advantage of the new hardware features in Windows is a great way. Multitouch has hit the main stream, and our new APIs make it easy to optimize applications for multitouch. Similarly, we have a new Sensors and Location platform that abstracts the hardware and allows you to take advantage of data like the amount of ambient light by coding to a single, unified API that Windows provides. For those doing graphics on Win32, we have a lot of improvements in the DirectX family so you can extract the performance out of the idle processing power on most modern PCs… Direct2D and DirectWrite can revolutionize how you do graphics, without requiring the developer ramp-up on becoming a DirectX expert. If you are into fundamentals, there is also huge value that is not represented in this slide; features like notifications for power, restart manager to make sure users don’t lose productivity when catastrophic failures happen, doing parallelism to take advantage of the kernel improvements for threading, etc…
We’ve added some great controls that were previously part of the WPF Toolkit: DataGrid, Calendar, and DatePicker. Also, there is the new Visual State Manager (VSM) that enables users to create a control contract for the parts & states model, map the control logic to its respective visual states, and also enable the user to create interchangeable skins.As you probably expected we have support for touch-enabled systems and also support manipulation (scaling, rotating, etc…).The WPF text rendering stack has been completely replaced. This change brings improvements to text rendering configurability, clarity, and support for international languages.I would definitely read the Visual State Manager Overview as wellhttp://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-visual-state-manager-overview.aspxFor a deeper understanding of some new WPF features go to the VS2010 Training Kit -- C:VS2010TrainingKitLabsWPF4DataDrivenMasterDetailBusinessFormAlso http://channel9.msdn.com/shows/Continuum/WPF-Design-Surface-Improvements-in-Visual-Studio-2010/The WPF team divided their investment into three core pillars: Fundamentals Better fundamentals focused on getting a few very important things right: The new Cached Composition API gives application authors fine-grained control over caching rendered elements in video memory. Once an element is cached in video memory, it can be used as an image brush to fill any arbitrary 2D shape, as a texture on a 3D model, or as an input to an effect. An application author would typically use this caching mechanism when rendering the element tree on a per frame basis is prohibitively expensive due to the complexity of the content. This can hugely improve application performance for the most demanding applications. A new text rendering stack allows you to select from many different rendering and layout modes. Importantly, we support Compatible Width Layout, which produces rendering with sharpness comparable to GDI cleartype. Also, we will now expose the ability for the app to select Aliased Text Rendering and Grayscale Text Antialiasing. WPF Text rendering is now comparable to (arguably it even looks better than) GDI’s Compatible Width Cleartype, which to this point has set the standard for text crispness. In fact the new VS2010 code editor is actually written in WPF. That is how confident we are on the new text. Finally, the fundamental we had to get right was deployment. .NET 4 finally does that by taking advantage of client profile SKU. If you have heard of client profile from 3.5 SP1, we introduced the concept there, but could not truly execute it because we needed side by side installations. .NET 4 is a side-by-side release. It can run side-by-side with .NET 3.5 SP1, and this finally allows us to use client profile the way it was intended; client profile is a special SKU of the .NET framework that installs only the assemblies needed for client applications. This decreases the download size and the installation time for the framework. The download size of the client profile SKU is 28 MB. We have also improved the install time significantly with optimizations on for download logic and NGEN order. Reference: http://msdn.microsoft.com/en-us/library/cc656912(VS.100).aspx ProductivityOn productivity: the Visual Studio 2010 XAML designer . VS also includes include RAD databinding with a DataSources window and databinding pickers, an improved XAML editor with IntelliSense on markup extensions (including Binding and Resources), and improved browser including new property editors for brushes, fonts, and image picking. Windows 7 light up Finally, WPF allows you to take advantage of the new features in Windows 7. We have XAML support for taskbar’s jumplists and Overlay icons. We have a coming ribbon control that ships out of band later in the summer, and we have multitouch. The new multitouch API converges with the Surface API, and we now have a unified WPF multitouch stack; since the APIs are converging we will also be releasing a Surface toolkit so you can get the Surface controls and use them in your desktop WPF applications.
Good: No specific touch APIs are used but the application UI is appropriately sized and works well with the built-in gesturesBetter: The gesture APIs are supported to give smooth natural interactionsBest: Deep touch-focused experiences designed to take advantage of multi-touch featuresMSDN gestures supported in Windows 7 - http://msdn.microsoft.com/en-us/library/dd940543(v=VS.85).aspx
Show Travel / Start
TouchPoints are NEW in .NET 4.0 – can be used to capture and code up custom gestures as a response.WPF 4.0 adds to UIElement API, allowing tracking of multiple touches and generates individual or cumulative manipulations, such as TranslateX or (Y), Rotate, Scale. The manipulations can be easily mapped to gestures, such as move, re-size, rotate, etc…This is the BETTER Scenario. It also includes Inertia processing capabilities.Also WPF 4.0 adds the ability to capture raw touch events on UIElements, such as TouchDown, TouchUp. Each raw touch is associated to a TouchDevice with a unique ID. This is the BEST scenario – used when different behavior (or more subtle differences) between types of touches other input, such as mouse clicks is desired.
Basic Manipulation & End Travel
Content of the Surface SDK for Windows 7Reference AssembliesVS2010 Project & Item TemplatesSample ApplicationsDocumentation, including an API referenceFrom the documentationAPIs and Controls in the Reference Assembly The Surface Toolkit focuses primarily on the addition of multitouch-enabled controls. Some of these controls are specialized counterparts to WPF controls, and others enable you to include functionality in your application in ways that have no WPF counterpart. The following table lists the controls that are included in the Surface Toolkit and provides a brief description of how to use them. Control Description LibraryBarList items horizontally, group items into several groups, and scroll groups. By default, the LibraryBar control supports drag-and-drop operations. LibraryContainerUse the dual-view capability of the LibraryContainer control to arrange items in a horizontal bar or in a vertical stack, and switch between the two views. LibraryStackDisplay items as stacked on top of each other. Users can rearrange the order of the stack or remove items from the stack to view individual items. By default, the LibraryStack control supports drag-and-drop operations. ScatterViewUse the ScatterView control as a container for any other user interface (UI) element. When you place a UI element inside of a ScatterView control, that element automatically gains the ability to be moved, rotated, and resized using one or multiple touches. SurfaceButtonUse this specialized version of the WPF Button control to provide a different default look and feel, add support for touch visualizations, and customize how the system handles input device events. For example, if multiple touches target the control, it raises the Click event only after all touches are lifted. 5 Control Description SurfaceCheckBoxUse this specialized version of the WPF CheckBox control to provide a different default look and feel, and add support for touch visualizations. SurfaceInkCanvasProvide a drawing canvas that you can use with touch input to create, modify, and delete drawing strokes. SurfaceListBoxUse this specialized version of the WPF ListBox control to add support for panning—the ability to move the content by direct contact with the content itself—instead of using a scroll bar. SurfaceRadioButtonUse this specialized version of the WPF RadioButton control to provide a different default look and feel, and add support for touch visualizations. SurfaceScrollViewerUse this specialized version of the WPF ScrollViewer control to add support for panning—the ability to move the content by direct contact with the content itself—instead of using a scroll bar. SurfaceSliderUse this specialized version of the WPF Slidercontrolto provide a different default look and feel, and add support for touch visualizations. SurfaceWindowUse this specialized version of the WPF Window control to provide and activate the necessary event handlers to make sure that it receives touch events. In addition, the the Surface Toolkit adds the drag-and-drop framework, which allows users to perform drag-and-drop operations between multitouch-enabled controls. You can also use the framework to customize hit-testing rules, visual cues on the containers, and graphics for the object that is being dragged. Finally, the Surface Touch toolkit has touch visualizations that provide users with instant and consistent visual feedback when they touch a touch-enabled screen. These visualizations help increase user accuracy by showing users how the system recognizes their touches, increase playfulness by making all of the screen interactive, and minimize confusion when direct manipulations are not possible (such as when users try to enlarge content that is already maximized, or when users try to rotate content that cannot
The Task Parallel Library (TPL) is a set of public types and APIs in the System.Threading and System.Threading.Tasks namespaces in the .NET Framework version 4. These types rely on a task scheduler that is integrated with the .NET ThreadPool. The purpose of the TPL is to make developers more productive by simplifying the process of adding parallelism and concurrency to applications.The TPL scales the degree of concurrency dynamically to most efficiently use all the processors that are available. Parallel code that is based on the TPL not only works on dual-core and quad-core computers. It will also automatically scale, without recompilation, to many core computers.Parallel.ForEach has numerous overloads; the most commonly used has the following signature:public static ParallelLoopResultForEach<TSource>(IEnumerable<TSource> source,Action<TSource> body)The IEnumerable<TSource> source specifies the sequence to iterate over, and the Action<TSource> bodyspecifies the delegate to invoke for each element.NOTE:You definitely want them to know about the Concurrency site on MSDN for parallel programming:http://msdn.microsoft.com/en-us/concurrency/My favorite demo to do here is in the training kit. Just show the parallel and non-parallel code samples:C:VS2010TrainingKitDemosParallelForLoopSourceFor more demos, sample code with links to descriptions and pretty much everything else you need can be found here:http://code.msdn.microsoft.com/ParExtSamplesThere is also a parallel demo in the VS2010 Training Kit that can be found here:C:VS2010TrainingKitLabsParallelExtensionsLab.htmlhtmlDocSet_default.html
Parallel LINQ (PLINQ) is a parallel implementation of LINQ to Objects. PLINQ implements the full set of LINQ standard query operators as extension methods for the T:System.Linq namespace and has additional operators for parallel operations. PLINQ combines the simplicity and readability of LINQ syntax with the power of parallel programming. Just like code that targets the Task Parallel Library, PLINQ queries scale in the degree of concurrency based on the capabilities of the host computer.NOTE:The perfect demo here is the Baby Names example in the VS2010 Training Kit. This thing is just great for showing parallel and non-parallel code as well as visually seeing performance:C:VS2010TrainingKitDemosParallelBabyNamesSource
(Demo runs about 5 minutes)
Windows 7 Visual Studio 2010 for Developers
4/12/2010<br />Windows Development with Visual Studio 2010<br />Lynn Langit<br />Microsoft Developer Evangelist<br />http://blogs.msdn.com/SoCalDevGal<br />
Learn More About Windows 7<br />Technical Resources<br />Community Resources<br /><ul><li>Windows Developer Center on MSDN </li></ul>http://msdn.microsoft.com/en-us/windows/dd433113.aspx<br /><ul><li>Windows Application Compatibility Developer Center http://www.msdn.microsoft.com/en-us/windows/aa904987.aspx
Windows 7 Remediation Labs </li></ul>http://www.readyset7.com/workshops<br /><ul><li>Windows 7 Training Kit for Developers</li></ul>http://go.microsoft.com/?linkid=9681321<br /><ul><li>“PhotoView” Reference Application (XP2Win7Project) http://code.msdn.microsoft.com/XP2Win7
Windows 7 Blog for Developers www.windowsteamblog.com/blogs/developers.aspx
Windows 7 on Channel 9 http://channel9.msdn.com/tags/Windows+7</li></li></ul><li>SoCal Windows 7 Developer Resources<br />Technical Resources<br /><ul><li>Slides – http://blogs.msdn.com/SoCalDevGal