windows - 在 MFC VC++ 中未捕获 MouseWheel 事件
问题描述
目前我正在将我的一个 MFC 应用程序从 Windows 7 32 位迁移到 Windows 10 64 位。突然我的鼠标滚轮在我的应用程序中停止工作。
相同的代码适用于 windows 7 上的应用程序。
有人可以请教吗?
//Mouse registration
m_MouseHook = SetWindowsHookEx(WH_MOUSE,&MouseHookProc, AfxGetInstanceHandle(), GetCurrentThreadId());
//Callback function
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CPPUITrace objTrace(_T("CPostProcUIControlsDialog::MouseHookProc"));
objTrace.LogError(_T("Madhu::Got wParam %d and nCode is %d"),wParam,nCode);
if (wParam == WM_MOUSEWHEEL) //Never getting this event
{
//Logic
}
}
解决方案
我自己想出了答案。在 Windows 10 中,有一个新概念,即在活动窗口和幽灵窗口上滚动工作。由于代码片段来自以前的遗留事件,因此事件过去常常被传递到主窗口,因为幽灵窗口没有使用它。
从 windows10 开始,有一个鼠标滚动设置,如果它被激活,幽灵窗口也开始消耗鼠标滚动事件
推荐阅读
- android - 如何在回收卡视图中共享卡片视图的内容,如 textview 字符串
- jquery-ui - Google 自动地址:房屋名称属性
- laravel-5 - Boostrap 模态未在 Laravel 5 中加载
- r - for(i in seq_along(data_file):文件错误(文件,“rt”):无效的“描述”参数
- reactjs - 如何在 Meteor 环境中使用 React、Material UI 和 Styled-components 管理服务器端渲染?
- css - 顺风 css 不透明度
- mapbox - 导出到图块集时,Mapbox 几何图形会降级
- mysql - How to resolve Mysql Near Sintax Error CI
- r - 将树状数据提取到R中的列表中
- spring - 如何将 Oracle jdbc 数据库客户端添加到 Heroku 中的 Spring Boot 应用程序?