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