MFC 关于滚动条 及 ScrollWindow函数
voidCMainWnd::OnVScroll(UINTnCode,UINTnPos,CScrollBar*pScrollBar){intnDelta;switch(nC...
void CMainWnd::OnVScroll(UINT nCode,UINT nPos,CScrollBar *pScrollBar)
{
int nDelta;
switch(nCode)
{
case SB_LINEUP:
nDelta=-LINESIZE;
break;
case SB_PAGEUP:
nDelta=-m_nVPageSize;
break;
case SB_THUMBTRACK:
nDelta=(int)nPos-m_nVScrollPos;
break;
case SB_PAGEDOWN:
nDelta=m_nVPageSize;
break;
case SB_LINEDOWN:
nDelta=LINESIZE;
break;
default:
return;
}
int nScrollPos = m_nVScrollPos + nDelta;
int nMaxPos = m_nViewHeight - m_nVPageSize;
if(nScrollPos<0)
nDelta =- m_nVScrollPos;
else if(nScrollPos > nMaxPos)
nDelta = nMaxPos -m_nVScrollPos;
if(nDelta != 0)
{
m_nVScrollPos += nDelta;
SetScrollPos(SB_VERT,m_nVScrollPos);
ScrollWindow(0,-nDelta);
}
}
ScrollWindow的第二个参数值 正值 表示内容向右、下移动 可是 我假想触发SB_LINEDOWN消息 使其nDelta==8 执行到 函数ScrollWindow时 参数为ScrollWindow(0,-8)为什么内容会向下移动 展开
{
int nDelta;
switch(nCode)
{
case SB_LINEUP:
nDelta=-LINESIZE;
break;
case SB_PAGEUP:
nDelta=-m_nVPageSize;
break;
case SB_THUMBTRACK:
nDelta=(int)nPos-m_nVScrollPos;
break;
case SB_PAGEDOWN:
nDelta=m_nVPageSize;
break;
case SB_LINEDOWN:
nDelta=LINESIZE;
break;
default:
return;
}
int nScrollPos = m_nVScrollPos + nDelta;
int nMaxPos = m_nViewHeight - m_nVPageSize;
if(nScrollPos<0)
nDelta =- m_nVScrollPos;
else if(nScrollPos > nMaxPos)
nDelta = nMaxPos -m_nVScrollPos;
if(nDelta != 0)
{
m_nVScrollPos += nDelta;
SetScrollPos(SB_VERT,m_nVScrollPos);
ScrollWindow(0,-nDelta);
}
}
ScrollWindow的第二个参数值 正值 表示内容向右、下移动 可是 我假想触发SB_LINEDOWN消息 使其nDelta==8 执行到 函数ScrollWindow时 参数为ScrollWindow(0,-8)为什么内容会向下移动 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询