设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 服务器 > 系统 > 正文

ON_WM_MOUSEWHEEL无响应

发布时间:2021-01-07 01:09 所属栏目:52 来源:网络整理
导读:问题: ON_WM_MOUSEWHEEL 消息无响应 转动滚轮会导致Windows在有输入焦点的窗口(不是鼠标光标下面的窗口)产生WM_MOUSEWHEEL消息。所以当子窗口没有焦点的时候将收不到消息WM_MOUSEWHEEL。但是,当我们把鼠标移到某个子窗口的时候,并转动滚轮,应该是希望

问题:ON_WM_MOUSEWHEEL消息无响应

转动滚轮会导致Windows在有输入焦点的窗口(不是鼠标光标下面的窗口)产生WM_MOUSEWHEEL消息。所以当子窗口没有焦点的时候将收不到消息WM_MOUSEWHEEL。但是,当我们把鼠标移到某个子窗口的时候,并转动滚轮,应该是希望这个子窗口响应滚轮,而不管它是否有焦点。最直接的解决方法是调用SetFoucs函数把这个子窗口设为有焦点。常规来说,滚轮是改变滚动条位置的,而单击鼠标左键才是用来改变焦点的。滚动滚轮的时候焦点改变并不是我们所希望的。那我们要怎么又使鼠标下面的窗口响应滚轮, 而又不改变焦点呢? 这就需要重载?PreTranslateMessage 来改变响应WM_MOUSEWHEEL消息的窗口。

BOOL CXXXApp::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_MOUSEHWHEEL || pMsg->message == WM_MOUSEWHEEL)
    {
        POINT pos; 
        GetCursorPos (&pos); 
        pMsg->hwnd = WindowFromPoint (pos); 
    }
 
    return CWinAppEx::PreTranslateMessage(pMsg);
}
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读