用鼠标滚轮控制图片缩小倍数,当向下滚动(缩小)时,如果过快,图片反而放大很多倍。如果滚动比较慢一些,正常。这是为什么?请大家不吝赐教。
代码如下:BOOL CrzexplorerView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
CMainFrame *pMainfrm=(CMainFrame *)AfxGetMainWnd(); 
if(g_bZoom==TRUE && m_bZoom)
{
if (zDelta>0) {
                        pMainfrm->IsZoom*=zDelta/120*1.01; //每次放大1.01倍
Invalidate(TRUE);
}

if (zDelta<0)

{
pMainfrm->IsZoom*=(-zDelta)/120*0.99; //每次缩小0.99倍
Invalidate(TRUE);
}
}
if (g_bZoom==TRUE && m_bZoom)
return TRUE;
else
return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}

解决方案 »

  1.   

    过快zDelta变化大,有可能数据溢出,short的容量有限吧?试试限制if (zDelta<0)的zDelta的值看看。
      

  2.   

    不知道楼上说的对不对。
    我做了如下修改,OK!       if (zDelta==120)        {
               pMainfrm->IsZoom*=1.01; //每次放大1.01倍
                Invalidate(TRUE);
            }
        
            if (zDelta==-120)
        
            {
               pMainfrm->IsZoom*=0.99; //每次缩小0.99倍
                Invalidate(TRUE);