Windows Vista 中的触摸输入支持

从 Windows Vista 开始,平板电脑技术支持支持触摸数字化器的平板电脑上的触摸输入。 此支持包括一个增强的用户界面,以便在使用手指进行输入时帮助定位和命令 Windows。

触控数字化器支持

触控笔和触控输入非独占

不要假定触控笔和触摸输入在 InkCollectorInkOverlayRealTimeStylus 应用程序中互斥。

在 Windows Vista 中,当系统识别触控笔时,它会忽略触摸输入。 也就是说,触摸笔划结束,笔划开始。 由于这可能会在将来发生更改,因此代码不应假定笔和触摸输入是互斥的。

其他鼠标消息源

即使用户仅使用手指或笔交互,也还有其他鼠标消息源。 源包括触摸板,以及旨在让分层窗口后面的应用程序知道鼠标在应用程序上方移动的移动。

启用和禁用触摸输入用户界面

根据应用程序的要求,你可能希望启用或禁用触摸输入用户界面。 为此,请在窗口过程中截获操作系统窗口消息并修改 Windows 消息。 重写应用程序中的 WndProc 以截获这些消息。 以下 C# 伪代码演示如何启用和禁用触摸输入用户界面。 该代码还演示如何使用相同的技术来禁用长按手势。 此方法还可用于禁用触笔。

const int WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS = 716;

const uint SYSTEM_GESTURE_STATUS_NOHOLD           = 0x00000001;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON  = 0x00000100;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF = 0x00000200;

protected override void WndProc(ref Message msg)
{
    switch (msg.Msg)
    {
        case WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS:
        {
            uint result = 0;
            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_NOHOLD;
            }

            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON;
            }

            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF;
            }

            msg.Result = (IntPtr)result;
        }
        break;

        default:
            base.WndProc(ref msg);
            break;
    }
}

Windows Touch