Distinguishing Pen Input from Mouse and Touch

来源:互联网 发布:v5团队淘宝兼职平台 编辑:程序博客网 时间:2024/05/22 06:37
Distinguishing Pen Input from Mouse and Touch

When your application receives a mouse message (such as WM_LBUTTONDOWN), it may call the Win32 API, GetMessageExtraInfo function to evaluate whether the message originated from a pen or a mouse device.

The value returned from GetMessageExtraInfo needs to be mask-checked against 0xFFFFFF0, and then compared with 0xFF515700. The following definitions may make this clearer:

#define MI_WP_SIGNATURE  0xFF515700#define SIGNATURE_MASK   0xFFFFFF00#define IsPenEvent(dw)   (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE

If the comparison is true, then this mouse message was generated by a Tablet PC pen or touch screen. In all other cases, you can assume that this message was generated by a mouse device.

The lower 8 bits returned from GetMessageExtraInfo are variable. Of those bits, 7 are used to represent the cursor ID, zero for the mouse or a variable value for the pen ID. Additionally, in Windows Vista, the eighth bit is used to differentiate touch input from pen input (0 = pen, 1 = touch).