用两根手指在触摸板上滚动时没有得到WM_MOUSEWHEEL事件

时间:2019-04-19 09:39:41

标签: c++ windows mfc mousewheel touchpad

我最近将Trackpad / Touchpad作为定位设备放入了我的机器。我的软件具有在WPF和MFC中创建的UI。在其中一个窗口中,我面临滚动问题,尤其是使用触摸板的两指滚动。使用鼠标滚轮滚动时,相同的UI窗口可以正常工作。我已经检查了其他几个UI元素,这些元素是我的软件的一部分,并且是在WPF中创建的,两指滚动始终在其中工作,鼠标指针放在任何地方。

进一步为此添加了更多见解,当将鼠标指针停留在有问题的窗口中的活动UI控件上(即带有此关联文本的复选框)时,两指滚动可以按预期工作。但是将鼠标指针放在窗口或文本的空白区域中时,只有滚动条移动,而不是内容移动。但是在同一窗口中,滚动条可以与鼠标滚轮完美配合,并且鼠标指针可以放置/悬停在相关窗口中的任何位置。

我已经检查了代码,但截至目前仍未发现任何错误,由于滚动始终可以通过鼠标滚轮使用,因此我也很难责怪代码。 其次,我一直在通过spy ++进行检查,当用两个手指将鼠标指针滚动到有问题的窗口中的活动控件之外的区域中时,用两根手指滚动时会收到Windows事件,我没有收到WM_MOUSE WHEEL事件,而是得到了WM_VSCROLL。 / p>

同一观察结果,当我禁用两指滚动窗口设置时,在Windows中的任何地方都不会发生两指滚动,但是在我的软件中,每当我做两根手指时,两指滚动确实与CTRL被隐式按下滚动但灵敏度较低。令人惊讶的是,它在相关窗口中也能完美运行!

任何人都可以让我知道为什么两根手指的滚动不适用于所讨论的窗口。

**令人怀疑的是,有问题的MFC窗口中的每个UI控件都被视为子窗口,而该窗口被视为父窗口!

注意:- 1)安装的操作系统是Windows 10。 2)驱动程序是符合HID的驱动程序 3)还有它的精密触摸板。

0 个答案:

没有答案