CWnd中的鼠标滚轮之后滚动条未更新

问题描述

我实现了一个OnMouseWheel方法,以在我们显示的图例中滚动Cwnd。

BOOL CLegenda::OnMouseWheel(UINT nFlags,short zDelta,CPoint pt)
{
    if (!(nFlags & MK_SHIFT || nFlags & MK_CONTROL))    // Zoom in or out
    {
        CRect rect;
        GetwindowRect(rect);
        SCROLLINFO scrollinfo;
        memset(&scrollinfo,'\0',sizeof(SCROLLINFO));
        scrollinfo.cbSize = sizeof(SCROLLINFO);
        // KBR,28-8-2020
        // iedere muiswiel klik betekent 5 regels omhoog of omlaag
        bool bChanged = false;
        if (GetScrollInfo(SB_VERT,&scrollinfo))
        {
            long nMax = scrollinfo.nMax;
            if (zDelta < 0)
            {
                if (m_iVertScrollPos < nMax - rect.Height())
                {
                    // naar beneden
                    if (m_iVertScrollPos < nMax)
                        m_iVertScrollPos += 20 * 5 * -zDelta / 120;
                    if (m_iVertScrollPos > nMax - rect.Height())
                        m_iVertScrollPos = nMax - rect.Height();
                    bChanged = true;
                }
            }
            else
            {
                // omhoog
                if (m_iVertScrollPos > 0)
                {
                    int iTotaalUp = 20 * 5 * zDelta / 120;
                    if (m_iVertScrollPos - iTotaalUp > 0)
                        m_iVertScrollPos -= iTotaalUp;
                    else
                        m_iVertScrollPos = 0;
                    bChanged = true;
                }

            }
        }
        if (bChanged)
        {
            RedrawWindow();
        }
    }
    return CWnd::OnMouseWheel(nFlags,zDelta,pt);
}

它工作正常,没有垂直滚动条。他没有更新。 当您将鼠标悬停在垂直滚动条上时,将完成更新。 您可以在两个图像中看到。鼠标悬停在滚动条上之后,左键位于鼠标滚轮之后,右键

Mousewheel down

Mouse-over

我必须在此OnMouseWheel()方法添加些什么,以使其正常工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)