WPF 如何确定应用程序开启了 Pointer 触摸消息的支持

因为 WPF 在开启 Pointer 和没有开启的基础表现几乎相同,因此从业务层很难了解到当前是否开启了 Pointer 消息。本文从开发者的角度,通过 Windows 消息判断当前是否开启 Pointer 支持

win10 支持默认把触摸提升 Pointer 消息 告诉大家如何在 Win10 下让 WPF 在 .NET 4.7 和以上框架支持 Pointer 消息

那么如何确定这个 WPF 程序我写对了,开启了 Pointer 消息?可以通过监听 Window 消息,如果能收到 Pointer 的消息,那么算开启成功

不需要在用户端判断,用户端只需要判断 运行的系统是 Windows 10 Creators Update 1703 10.0.15063 就可以。因此本文更多是给开发端,开发的时候通过此方法可以确定是否开启了 Pointer 消息

WPF 添加窗口消息钩子方法 这篇博客告诉大家如何拿到窗口的消息

在这个基础上,尝试在拿到消息判断是否 Pointer 消息,如果能收到 Pointer 消息,那么证明代码没写错

       public MainWindow()
        {
            InitializeComponent();

            SourceInitialized += OnSourceInitialized;
        }

        private void OnSourceInitialized(object sender, EventArgs e)
        {
            var windowInteropHelper = new WindowInteropHelper(this);
            var hwnd = windowInteropHelper.Handle;

            HwndSource source = HwndSource.FromHwnd(hwnd);
            source.AddHook(Hook);
        }

        private IntPtr Hook(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled)
        {
            const int WM_POINTERDOWN = 0x0246;

            if (msg == WM_POINTERDOWN)
            {
                // 开启了 Pointer 消息
                Debugger.Break();
            }


            return IntPtr.Zero;
        }

如果能进入 msg == WM_POINTERDOWN 那么就是收到 Pointer 消息了

代码放在 github 欢迎小伙伴访问

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

lindexi_gd CSDN认证博客专家 C# WPF UWP 微软最具价值专家
我是微软Windows应用开发方向的最具价值专家,欢迎访问我博客blog.lindexi.com里面有大量WPF和UWP博客
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页