Multitouch requires an environment (platform and operating system, hosting application such as a browser) that can propagate the touch input to an individual application, such as your Silverlight-based application.
Windows 7 supports multitouch input at the operating system level. This is supported in part through a message (WM_TOUCH). Already at this level, the operating system provides a promotion of multitouch messages as mouse messages, so that multitouch users can use touch and gestures to substitute as mouse moves or mouse clicks, when interacting with applications that may not be touch-aware and do all their spatial input processing through mouse events/messages. Windows 7 also coalesces the messages when appropriate.
Internet Explorer version 8 as a host is also multi-touch aware, and forwards platform multitouch messages in such a manner that plug-ins such as Silverlight can interact with multitouch within the host.
Multitouch Input for Silverlight (shown for IE8 host)
.png)
Multitouch is also supported for Silverlight in current versions of FireFox hosts running on Windows 7, and for out-of-browser applications running on Windows 7. However, multitouch input is not supported for applications running in full-screen mode.
Registering for Multitouch
As part of the operating system design for multitouch, each application that wants to receive multitouch messages discretely must register its HWND (Touch API for Windows 7 includes RegisterTouchWindow for this purpose). The Silverlight programming environment takes care of this registration step, for Silverlight as a whole and all applications that use Silverlight as the runtime. Therefore it is not generally necessary to interact directly with platform code to process multitouch input. However, the particular characteristics of multitouch interaction that are declared by how Silverlight registers itself for multitouch are fairly specific:
Silverlight is registered for raw touch input, not gestures. If your requirements include gestures, you have to process touch input into gestures using your own application code, within the context of Silverlight. Alternatively, you may need a larger interoperation design so that you can include a separate HWND that is multitouch registered for gestures from the platform, and interoperates with a Silverlight content area.
In general, Silverlight promotes raw touch input to mouse events. (However, on a per-touchframe basis, you can disable promotion, as is described in upcoming sections of this topic.)
Within a host, certain gestures might be promoted by the browser host to become events other than mousedown/mousemove/mouseup.