OnHScroll 用鼠标拉动不灵!请教这是为什么

OnHScroll 用鼠标拉动不灵!请问这是为什么?

UINT   nSBCode   =   LOWORD(wParam);
int   nPos   =   0;

switch(nSBCode) //滚动条的通知消息码
{

case   SB_LINEDOWN:       //向右滚动一行(列)
a=m_scroll.GetScrollPos()+   5;
//a   +=   5;
break;

case   SB_LINEUP:     //向左滚动一行(列).      
a=m_scroll.GetScrollPos()-   5;
//a   -=   5;
break;
case   SB_PAGEDOWN   :   //向右滚动一页.
a=m_scroll.GetScrollPos()+50;
//a   +=   50;
break;      

case   SB_PAGEUP:   //向左滚动一页  
a=m_scroll.GetScrollPos()-50;
//a   -=   50;
break;

  case   SB_THUMBTRACK:   //滚动框被拖动
a   =   m_scroll.GetScrollPos();
m_scroll.SetScrollPos(a);

break;

case   SB_THUMBPOSITION:
a   =   m_scroll.GetScrollPos();
m_scroll.SetScrollPos(a);

break;
}

m_scroll.SetScrollPos(a);

------解决方案--------------------
case SB_THUMBTRACK: //滚动框被拖动
a = m_scroll.GetScrollPos();
m_scroll.SetScrollPos(a);

break;

case SB_THUMBPOSITION:
a = m_scroll.GetScrollPos();
m_scroll.SetScrollPos(a);

break;
}


这里有点问题吧
------解决方案--------------------
http://m2.tech.topzj.com/thread-10026-1-1.html
------解决方案--------------------
void CXXDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

int a;

switch(nSBCode)//滚动条的通知消息码
{

case SB_LINEDOWN: //向右滚动一行(列)
a=m_scroll.GetScrollPos()+ 5;
m_scroll.SetScrollPos(a);
break;

case SB_LINEUP: //向左滚动一行(列).
a=m_scroll.GetScrollPos()- 5;
m_scroll.SetScrollPos(a);
break;
case SB_PAGEDOWN : //向右滚动一页.
a=m_scroll.GetScrollPos()+50;
m_scroll.SetScrollPos(a);
break;

case SB_PAGEUP: //向左滚动一页
a=m_scroll.GetScrollPos()-50;
m_scroll.SetScrollPos(a);
break;

case SB_THUMBTRACK: //滚动框被拖动
m_scroll.SetScrollPos(nPos);

break;

case SB_THUMBPOSITION:
m_scroll.SetScrollPos(nPos);

break;
}