如何删除 Windows 10 上的白色触摸点

2023-12-22

我正在为 Windows 10 PC 创建一个类似信息亭的应用程序,并以触摸屏作为其唯一的输入界面。我要删除的是显示为视觉触摸反馈的白色触摸点(大部分与圆圈一起,可以关闭)。

有谁知道如何做到这一点?

我已经搜索过注册表是否有使用的光标(*.cur)文件,但没有找到任何结果。因此,我猜测触摸反馈的显示方式有所不同。

只是为了确保 - 我不想失去触摸功能,只需要消失视觉反馈即可。


对于 WPF 程序:

为了消除 WPF 元素的触摸反馈,设置就足够了Stylus.IsTapFeedbackEnabled依赖属性false。您可能想在样式中执行此操作:

<Style x:Key="yourStyle">
    <Setter Property="Stylus.IsTapFeedbackEnabled" Value="False" />
</Style>

The 白色触摸点你引用的实际上是一个光标。每当您触摸屏幕时,Windows 都会用触摸光标替换为控件设置的光标。为了避免这种丑陋的行为,您可以将光标设置为Cursors.None,这样光标就会被隐藏。将下面的代码粘贴到您的Window你不会看到你的白色触摸点不再了。

protected override void OnPreviewTouchDown(TouchEventArgs e)
{
    base.OnPreviewTouchDown(e);
    Cursor = Cursors.None;
}

protected override void OnPreviewTouchMove(TouchEventArgs e)
{
    base.OnPreviewTouchMove(e);
    Cursor = Cursors.None;
}

protected override void OnGotMouseCapture(MouseEventArgs e)
{
    base.OnGotMouseCapture(e);
    Cursor = Cursors.Arrow;
}

protected override void OnPreviewMouseMove(MouseEventArgs e)
{
    base.OnPreviewMouseMove(e);

    if (e.StylusDevice == null)
        Cursor = Cursors.Arrow;
}

您的光标将始终设置为Cursors.Arrow但是,当您使用鼠标时,您可能会丢失为窗口设置的不同光标。调整这种行为是一项简单的任务 - 我的代码仅用于演示目的。

对于 Windows 窗体程序:

看着参考来源Stylus.IsTapFeedbackEnabled https://referencesource.microsoft.com/#PresentationCore/Core/CSharp/system/windows/Interop/HwndStylusInputProvider.cs,我已经弄清楚了幕后发生的 P/Invoke 调用。以下是我为 Windows 窗体应用程序提出的建议:

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace TouchableWinform
{

    public class TouchableForm : Form
    {

        private const string TOUCH_SUPPORT_CATEGORY = "Touch support";
        private const bool IS_PRESS_AND_HOLD_ENABLED_DEFAULT_VALUE = false;
        private const bool IS_FLICKS_ENABLED_DEFAULT_VALUE = false;
        private const bool IS_TAP_FEEDBACK_DEFAULT_VALUE = false;
        private const bool IS_TOUCH_FEEDBACK_DEFAULT_VALUE = false;

        /// <summary>
        /// Gets or sets a values indicating whether press and hold is enabled.
        /// </summary>
        [Category(TOUCH_SUPPORT_CATEGORY), Description("Gets or sets a values indicating whether press and hold is enabled."), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(IS_PRESS_AND_HOLD_ENABLED_DEFAULT_VALUE)]
        public bool IsPressAndHoldEnabled
        {
            get;
            set;
        } = IS_PRESS_AND_HOLD_ENABLED_DEFAULT_VALUE;

        /// <summary>
        /// Gets or sets a value indicating whether flicks are enabled.
        /// </summary>
        [Category(TOUCH_SUPPORT_CATEGORY), Description("Gets or sets a value indicating whether flicks are enabled."), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(IS_FLICKS_ENABLED_DEFAULT_VALUE)]
        public bool IsFlicksEnabled
        {
            get;
            set;
        } = IS_FLICKS_ENABLED_DEFAULT_VALUE;

        /// <summary>
        /// Gets or sets whether a value indicating whether tap feedback is enabled.
        /// </summary>
        [Category(TOUCH_SUPPORT_CATEGORY), Description("Gets or sets whether a value indicating whether tap feedback is enabled."), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(IS_TAP_FEEDBACK_DEFAULT_VALUE)]
        public bool IsTapFeedbackEnabled
        {
            get;
            set;
        } = IS_TAP_FEEDBACK_DEFAULT_VALUE;

        /// <summary>
        /// Gets or sets whether a value indicating whether touch feedback is enabled.
        /// </summary>
        [Category(TOUCH_SUPPORT_CATEGORY), Description("Gets or sets whether a value indicating whether touch feedback is enabled."), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(IS_TOUCH_FEEDBACK_DEFAULT_VALUE)]
        public bool IsTouchFeedbackEnabled
        {
            get;
            set;
        } = IS_TOUCH_FEEDBACK_DEFAULT_VALUE;

        /// <summary>
        /// Processes Windows messages.
        /// </summary>
        /// <param name="m">The Windows <see cref="Message"/> to process.</param>
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x2CB:
                    m.Result = new IntPtr(1);
                    break;
                case 0x2CC:
                    uint flags = 0;
                    if (!IsPressAndHoldEnabled)
                        flags |= 1;
                    if (!IsTapFeedbackEnabled)
                        flags |= 8;
                    flags |= IsTouchFeedbackEnabled ? (uint)0x100 : 0x200;
                    if (!IsFlicksEnabled)
                        flags |= 0x10000;
                    m.Result = new IntPtr(flags);
                    break;
                default:
                    base.WndProc(ref m);
                    break;
            }
        }
    }
}

不幸的是,由于某种原因我仍然无法弄清楚,它看起来不太有效。我愿意接受任何建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除 Windows 10 上的白色触摸点 的相关文章

随机推荐

  • 前 3 名得分 - MySQL [重复]

    这个问题在这里已经有答案了 我正在建立一个 前 3 名 排行榜 我想显示前 3 个分数 绘制每个人的最大值 但我不想限制 3 个 因为我想显示具有前 3 个分数的任何人 例如 使用下面的数据 Name Score Matt 17 Mark
  • 通过 Facebook Graph API 提取照片

    我正在尝试提取当前登录个人资料的标记照片 获得了会话 ID 但它似乎是一个空数组 img src 我知道这段代码可能真的很糟糕 我是 PHP 新手 只是尝试了一些东西 如可用文档所述here http develo
  • 如何一次杀死 Unix 中的所有 shell?

    随着时间的推移 我的 Mac 变得越来越慢 原因是我的贝壳数量巨大 例如 Bashes 和 Fishes 每个shell都有不同的PID 一颗颗杀炮弹太麻烦了 怎样才能一次性杀死他们呢 The killall https ss64 com
  • 如何知道我单击了哪个元素来触发模糊事件处理程序? [复制]

    这个问题在这里已经有答案了 非常简单 我有一个模糊 事件处理程序来触发一个函数 我希望当单击某个元素触发模糊时该函数不会触发 我尝试了 document activeElement 但我得到的是 HTMLBodyElement 而不是我单击
  • 从 R 中的数据表中提取唯一行[重复]

    这个问题在这里已经有答案了 我正在从数据框和矩阵迁移到数据表 但尚未找到从数据表中提取唯一行的解决方案 我想我遗漏了一些东西 J 符号 尽管我还没有在常见问题解答和简介小插图中找到答案 如何提取唯一的行 而不转换回数据框 这是一个例子 li
  • 为什么“autoreconf”不经常使用?

    我是新手自动工具 https en wikipedia org wiki GNU Autotools 根据我的理解 使用 Autotools 构建软件需要遵循以下基本步骤 autoreconf install configure make
  • 移动应用的同源政策

    我一直在研究这个问题 但找不到令我满意的答案 我非常清楚同源策略适用于标准网络浏览器中的网站 当我开始开发一个使用本机 webview 并使用 jQuery 加载网站内容的移动应用程序时 我的问题出现了 load方法 通常在标准 Web 浏
  • 如何在调试模式下将命令行参数从 VS 传递给 Python?

    我正在使用 Visual Studio 的 Python 工具 注意 不是 IronPython 我需要使用从命令行传递给模块的参数 我了解如何通过在代码窗口中右键单击并选择 从调试开始 来在调试中启动模块 但这种方法永远不会提示我输入命令
  • 当搜索输入字段被清除时,如何从搜索过滤器中隐藏列表项目?

    我有一个像这样的 HTML 列表项 ul li a href Mango a li li a href Apple a li li a href Grape a li li a href Cherry a li ul 用户将看不到这些项目
  • 为什么动态添加 script 元素时 document.currentScript 没有属性?

    我有一个脚本如下 当脚本是index html 的一部分时 长度属性值为1 属性数量 的NamedNodeMap 对象将记录到控制台 如果该脚本是通过另一个脚本动态添加的 则长度属性值为 0 的 NamedNodeMap 对象将记录到控制台
  • 在对象类型 ng 模型值上使用 $formatter ,角度 1.2 有效,但版本 1.3 无效

    该代码适用于 Angular 1 2 26 但不适用于 Angular 1 3 0 rc5 或我尝试过的任何 1 3 x 版本 我发现这个问题https github com angular angular js issues 9218 h
  • 子序列的数量奇怪吗?

    我有一个像这样创建的序列对象 subsequences lt function data slmax lt max data time sequences seqe lt seqecreate data sequences sts lt s
  • AngularJS - 获取所有注册服务的列表?

    我可以获得所有已注册指令 服务 控制器等的列表吗 在运行时 您可以获得每个模块的提供者列表 即服务 指令 控制器 工厂 等 尽管该列表有点神秘 假设您有以下内容 var mod angular module myModule mod fac
  • 自动记录 DataMapper 查询

    我正在 Sinatra 中使用 DataMapper 开发一个简单的应用程序 我想查看 DM 为我的各种链接查找器等创建的查询 我努力了 DataMapper Logger new STDOUT debug in my configure
  • 脚本参数匹配

    在处理传递给脚本的参数时 PowerShell 是否会进行某种最接近的匹配或自动完成 鉴于此代码 CmdletBinding Param string Alias aS applySet string Alias cS conformSet
  • 如何编写具有多个搜索条件的MYSQL CASE WHEN语句?

    我知道像 PHP 这样的语言具有 switch case 控制结构 支持在单个 case 语句中进行多个验证 例如 Switch x case 1 2 3 a 0 break case 5 6 a 1 break 同样 在MYSQL中也可以
  • 使用用户名或电子邮件地址登录

    我正在尝试使用用户名或电子邮件创建登录 我的代码是 username REQUEST login email REQUEST login password REQUEST password if username password quer
  • 使用 Cordova 编译 Ionic 3 时出错:cordova\node_modules\cordova-common\src\superspawn.js:169:23

    在 Ionic 3 和 Cordova 中 当我发出命令时 ionic cordova run android emulate 它给出以下消息 BUILD FAILED in 3s at ChildProcess whenDone C we
  • iOS 错误“JSON 写入中的类型无效 (FIRTimestamp)”

    我正在尝试将我的数据映射到模型 我在其中使用 Firestore 快照侦听器来获取数据 我在这里获取数据并映射到 用户 模型 that do let user try User dictionary tempUserDic print us
  • 如何删除 Windows 10 上的白色触摸点

    我正在为 Windows 10 PC 创建一个类似信息亭的应用程序 并以触摸屏作为其唯一的输入界面 我要删除的是显示为视觉触摸反馈的白色触摸点 大部分与圆圈一起 可以关闭 有谁知道如何做到这一点 我已经搜索过注册表是否有使用的光标 cur