If you are planning on developing a Windows 7 Touch application, you may be wondering what development platform is the right choice for your application. Reviewing your requirements for your application and picking the right platform before you start can help you avoid roadblocks and design around limitations.  Each development platform that is enabled for designing for touch has pros and cons. Here are some questions you should ask yourself before picking a development platform for touch.

Existing code and Developer Skillsets

  • Are you a native code guy or .NET? 
  • Maybe you’re targeting web development?
  • Are you planning to reuse some code?
  • Do you have an existing application?
  • Maybe you plan on also targeting Windows 7 Phone and want to reuse some of the code for your phone app.

User Experience & Design Goals

  • Are you targeting cross platform?
  • What types of gestures make sense for your application?
  • Single touch good enough or do you need multi-touch?
  • Is there a requirement for user install experience?
  • Performance & Target Form Factors.
  • Do you need text entry? If you’re targeting slates, you need to plan for no keyboard. You’ll need to consider how text will be input.

Let’s walk through some of the capabilities of each development platform. The following capabilities will be covered for each platform.

Capability Description
Raw touch messages Access to each touch point state and data associated (down, up, move, etc.)
Gesture support Access to predefined touch actions (gestures) such as pan, pinch, press and hold, two finger tap, etc.
Manipulations and inertia Allows combinations of translation, rotation, and scaling with multiple touch points. Manipulations are essentially gestures with values associated with them that describe the entire gesture.

Ability to a use inertia on objects after touch up.
Promotion to mouse messages If manipulations or gestures aren’t handled by your application, the touch input is converted into mouse messages. For example, an unhandled tap is generates a a left mouse click message. Another example would be an unhandled pinch gesture is generates a control mouse wheel message.
Deployment How is the application installed? Is installation required?
TIP support Ability to activate the Text Input Panel (TIP).  Some of the development platforms allow you to leverage the Text Input Panel (TIP) while others do not. If the development platform you choose doesn’t support using the TIP, you will need to implement your own virtual keyboard for text input. See Todd Landstad’s presentation for a good overview of leveraging the TIP.

 

Native (Win32)

If you want full control over your development, this platform has the least limitations to Windows Touch API’s. However, as with any native code project, you may have to write more code because there is less framework to do the work for you.

Capability Description
Raw touch messages Yes. WM_TOUCH combines down, up, move and other states into one message.
Gesture support Yes. WM_GESTURE message is generated for common gestures.
Manipulations and inertia Yes. For manipulations, the application needs to implement the IManipulationProcessor interface. For inertia, the IInertiaProcessor interface can be used in conjunction with the IManipulationProcessor interface.
Promotion to mouse messages Yes. If you don’t handle a touch or gesture message, DefWindowProc will generate a corresponding mouse message.
Deployment Installer required. Administrative rights required for install.
TIP support Yes. TIP can be invoked by using creating and showing a caret. However, the TIP can’t be displayed in a full screen DirectX application.

More info on native touch development: Windows Platform SDK – Windows Touch

.NET

.NET has two choices: Silverlight and WPF. Depending on the functionality of your application and your requirements, you may want to pick one of the development platforms over the other.

Silverlight 4

Silverlight can be hosted in the browser or out of the browser. For “in browser”, Internet Explorer forwards platform touch messages to plug-ins such as Silverlight that are running within Internet Explorer. For “out of browser”, Silverlight registers for touch input but there are some limitations when running out of browser (see below).

Capability Description
Raw touch messages Yes (with some exceptions). Silverlight registers for raw touch input. Silverlight processes touch messages at the level of the raw message, analogous to the platform WM_TOUCH message.

However, touch input is not supported for Silverlight out of browser applications running in full-screen mode. For full-screen mode, you must rely on promotion to mouse messages.
Gesture support No. If your requirements include gestures, you have to process touch input into gestures using your own application code, within the context of Silverlight.
Manipulations and inertia No.
Promotion to mouse messages Yes. Silverlight generally promotes raw touch events to mouse messages for legacy support.
Deployment In browser: No installation required but Silverlight add on is a prerequisite;

Out of browser: Elevated trust install.
TIP support In browser: Yes.
Out of browser: No.

More info on Silverlight touch development: http://msdn.microsoft.com/en-us/library/dd894494(VS.95).aspx

WPF 4

Windows Presentation Foundation has support raw touch data as well as manipulation and inertia. WPF applications can detect and respond to touch in a manner similar to responding to other input, such as the mouse or keyboard, by raising events when touch occurs.

Capability Description
Raw touch messages Yes. The UIElement, UIElement3D, and ContentElement classes expose events that occur when a user touches an element. Several other controls support touch-enabled scrolling.
Gesture support Yes through manipulations.
Manipulations and inertia Yes. The UIElement supports manipulation. A manipulation is interpreted to scale, rotate, or translate.
Promotion to mouse messages Yes. By calling the Cancel method on the event arguments in a manipulation event.
Deployment Click once installer.
TIP support Yes.

More info on WPF touch development: Touch and Manipulation Input for .NET 4

HTML 5

HTML 5 is still under development but is quickly being supported by all modern browsers. While it is not targeted for touch, it is an option for cross platform, cross browser, web based applications.

Capability Description
Raw touch messages No.
Gesture support Enabled through browser. More info on IE9 support.
Manipulations and inertia No. Inertia enabled through browser for panning and scrolling.
Promotion to mouse messages N/A. Hosted in browser.
Deployment Hosted on website. Not required.
TIP support Yes.

Final Advice

The Windows Touch Guidance whitepaper is an excellent resource for details about developing for Windows Touch. A must read prior to starting your touch development.