如何解决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);
}
它工作正常,没有垂直滚动条。他没有更新。 当您将鼠标悬停在垂直滚动条上时,将完成更新。 您可以在两个图像中看到。鼠标悬停在滚动条上之后,左键位于鼠标滚轮之后,右键
我必须在此OnMouseWheel()方法中添加些什么,以使其正常工作?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。