问题描述
我实现了一个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 (将#修改为@)