我试过这里提到的GetMessageExtraInfo()
:Detect if WM_MOUSEMOVE is caused by touch/pen
但是它不起作用--对于触摸板产生的所有鼠标事件,GetMessageExtraInfo()
都会返回0
。
已在集成触摸板的笔记本电脑和连接了外部触摸板的台式机上试用。
我还尝试将WM_TOUCH事件与RegisterTouchWindow()
和WM_GESTURE
一起使用,但它们也不起作用-我在窗口上既没有收到WM_TOUCH
事件,也没有收到WM_GESTURE
事件。
本质上,我需要的是检测手指何时打开和关闭触摸板。但由于未知的原因,WM_TOUCH或WM_GESTURE似乎只适用于触摸屏,而不适用于触摸板。
有什么建议吗?
发布于 2020-09-12 02:07:45
如果您需要能够区分输入源,请考虑使用WM_POINTER*
消息而不是较旧的WM_MOUSE*
消息。请注意,这将需要调用EnableMouseInPointer()
来接收有关系统认为是鼠标的设备的消息(对于许多基本的触摸板来说都是如此)。
与WM_MOUSE*
消息不同,wParam
会告诉您某些虚拟按键的状态,而WM_POINTER
消息包含足够的信息,以便能够跟踪输入源。这有点复杂,因为指针消息不会根据按下的按钮提供单独的消息,但该信息至少仍然可用。
https://stackoverflow.com/questions/63851594
复制相似问题