关于鼠标滚轮的有关问题

关于鼠标滚轮的问题
哪位大人能给解释一下iAccumDelta变量和两个while循环的的作用!希望不要嫌分,少先谢谢了!
说明:   static   int   iDeltaPerLine,iAccumDelta   ;
--------------------------------------

......

......

iDeltaPerLine   =   WHEEL_DELTA   /   ulScrollLines   ;   //这个值应该为3

......

......

case       WM_MOUSEWHEEL:
               
                  if   (iDeltaPerLine   ==   0)
               
                              break   ;
               

                  iAccumDelta   +=   (short)   HIWORD   (wParam)   ;           //   120   or   -120
               

                  while   (iAccumDelta   > =   iDeltaPerLine)
               
                  {                          
               
                              SendMessage   (hwnd,   WM_VSCROLL,   SB_LINEUP,   0)   ;
               
                              iAccumDelta   -=   iDeltaPerLine   ;
               
                    }
               

                    while   (iAccumDelta   <=   -iDeltaPerLine)
               
                    {
               
                                SendMessage   (hwnd,   WM_VSCROLL,   SB_LINEDOWN,   0)   ;
               
                                iAccumDelta   +=   iDeltaPerLine   ;
               
                      }
               

                      return   0   ;

......

......

------解决方案--------------------
从代码来看:
iAccumDelta,是鼠标已经滚动的行数,正为向上,负为向下。
iDeltaPerLine,为设定的一次滚动多少行,超过这个值时才滚动。
while (iAccumDelta > = iDeltaPerLine),判断向上滚动。
while (iAccumDelta <= -iDeltaPerLine),判断向下滚动。