vue使用pointerdown

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue使用pointerdown相关的知识,希望对你有一定的参考价值。

参考技术A 使用Vue来实现鼠标悬停效果。
可以使用事件处理器v-on指令(简写为:@)来完成。为标签绑定mouseenter以及mouseleave事件即可。hover是css中的选择器,用于选择鼠标指针浮动在上面的元素。所以a:hover可用于设置当鼠标悬停在超链接之上时超链接的样式。

是否可以删除应用程序接收到的触摸消息(WM_POINTERDOWN 等)?

【中文标题】是否可以删除应用程序接收到的触摸消息(WM_POINTERDOWN 等)?【英文标题】:Is it possible to remove touch messages (WM_POINTERDOWN etc.) that an application receives? 【发布时间】:2014-01-12 00:15:47 【问题描述】:

我已经成功安装了带有SetWindowsHookExWH_GETMESSAGE 钩子,我可以看到应用程序接收到的WM_POINTERDOWNWM_POINTERUP 等消息。 (它是在 Windows 8.1 上运行的 32 位桌面应用程序。)

现在,我不仅想查看这些消息,还想删除其中的一些。

GetMsgProc 的文档说:

GetMsgProc 挂钩过程可以检查或修改消息。在挂钩过程将控制权返回给系统后,GetMessage 或 PeekMessage 函数将消息以及任何修改返回给最初调用它的应用程序。

使用WM_KEYUP 消息,这似乎工作正常。我可以在钩子里设置消息为WM_NULL,key事件就会消失。

但是,对于 WM_POINTER... 消息,这似乎不起作用。应用程序仍会收到消息(在调试器中验证)。

也许还有其他方法可以过滤/删除此类消息?

编辑:它必须与未经修改的第三方应用程序一起使用(因此使用了挂钩)。

更新:我设法通过在钩子中积极调用PeekMessage 来防止点击事件发生(从长远来看,这可能不是一个好主意)。但是,我仍然无法阻止触摸滚动。

【问题讨论】:

丢弃消息的目的是什么? @ta.speot.is:这个想法是识别钩子中的某些手势。然后应用程序不应处理指针消息,因为它们已在钩子中处理,不应导致应用程序中的滚动或鼠标移动。 它必须与未经修改的第三方应用程序一起使用(因此使用了钩子)。 在我看来,WH_GETMESSAGE 是用于监控和修改而不是删除。似乎WH_KEYBOARD_LLWH_MOUSE_LL 确实允许删除,并且在文档中都显示了这一点:它可能返回一个非零值以防止系统将消息传递给钩子链的其余部分或目标窗口 删除确实适用于键盘消息。不过,这听起来很有趣。我将检查 WH_MOUSE_LL 钩子是否接收到 WM_POINTER... 消息。但即使没有,我也可以过滤 resulting 鼠标消息。 【参考方案1】:

解决方案 1:

WH_GETMESSAGE 并非旨在删除或修改消息,仅用于监视它们。不幸的是,mark 的替代解决方案——使用WH_KEYBOARD_LLWH_MOUSE_LL——似乎也没有解决问题(因为多点触控不属于鼠标消息的范畴)。对不起,马克!

我想指出WH_CALLWNDPROC,它在其预期窗口之前接收消息。这似乎是修改消息的公认方式。

解决方案 2:

可能目标窗口根本不关心WM_POINTER... 消息!它可能通过Raw Input API 检测触摸输入,例如this demo here。试着留意WM_INPUT 的消息。

注意 1:原始输入消息可以删除,但不能修改或创建。

注意 2:我不完全确定,但未处理的 WM_INPUT 消息可能会造成内存泄漏,因为这实际上是一个巨大的指针。以防万一,在你的钩子过程中处理消息。

【讨论】:

感谢您的建议!但是,我仍然没有成功。修改或删除WH_CALLWNDPROC 中的消息根本不起作用,甚至对于键盘消息也不起作用。删除 WM_INPUT 消息不会阻止滚动或点击触摸。我开始相信 Windows 在一个非常基本的层面上处理“触摸滚动”...... @wmeyer 请问您正在测试什么应用程序?

以上是关于vue使用pointerdown的主要内容,如果未能解决你的问题,请参考以下文章

什么是vue插件,vue插件怎么使用?

vue 怎么挂载swiper

在vue中使用防抖

vue中使用vue-awesome-swiper

在vue里引用swiper插件,怎么使用

【vue】在vue中使用高德地图API