This document is intended to assist Windows developers who would like more information about implementing touch capabilities using Win32 and C/C++. Alternative approaches include Wacom's Wintab and Multi-Touch APIs.
Wacom is not responsible for the Windows implementation of touch, nor for its documentation.
With Windows 7, Microsoft added features to support hardware providing touch data and is automatically available. Windows 8 furthered this capability. Windows 7 included the WM_TOUCH and WM_GESTURE events. With Windows 8, the existing events were supplemented with a family of WM_POINTER events.
WM_TOUCH provides the most complete solution that continues to support Windows 7. The app is notified of every touch event via the application's message loop and windows procedure. The responsibility to record and respond to sequences of events falls to the developer. Applications can detect and track multiple simultaneous touch points, via touch point identifiers and position and action for each. Information presented can also be interpreted as recognized gestures (e.g. tap, scroll, zoom in and out, and rotate). Again the burden lies on the developer.
The WM_GESTURE event likewise continues to be available to support Windows 7. In this case, Windows notifies the application of user input that it has already identified as a gesture. To support responding to this event, a specific API is provided to properly consume the messages.
In connection with the WM_TOUCH event, two specialized interfaces are present and can be used to create natural user interfaces: IManipulationProcessor and IInertiaProcessor. The IManipulationProcessor can be used alone, but the IInertiaProcessor depends on IManipulationProcessor.
Windows 8 introduced a new interface that merges Mouse, Pen, and Touch together using the WM_POINTER family of events. Coding for this unified Pointer input allows you to handle all these input methods without code duplication. This is the result of a significant overhaul of the touch input stack in Windows 8; the idea being "Code for touch, get mouse and pen for free!"
Types of Applications
This section is focused on application development for Desktop applications, specifically with the Win32 API and C/C++ tools. As such, this would be all conceivable applications that might want to incorporate touch input, which is already a large segment of computing devices currently available.
Notably, these kinds of applications benefit greatly from the expanded interface:
- Graphics and rendering applications targeted at creative users
- Signature capture applications for the business community
- CAD-type applications that perform drawing measurement functions
Supported Operating Systems and Programming Frameworks
Windows 7 introduced touch input support and those features continue to available. Likewise, Windows 8 was designed to continue this support and provide newer, more integrated solutions for hardware that can support Mouse, Touch, and Pen input. Windows 10 continues to do so.
Win32 development is still supported. Newer styles (UWP, WPF, WinUI, Web) are supported with similar APIs. See also Reference.
Basics – Details about Windows Native Touch
Reference – Links to helpful Microsoft pages
FAQs – Answers to questions about getting started