15,979
社区成员
发帖
与我相关
我的任务
分享
void CCtrlDialogView_DisplaceDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int pos=m_ScrollBar.GetScrollPos();
//pos=GetScrollPos(SB_VERT);
SetDlgItemInt(IDC_EDIT_DISPLACE, nPos);
switch(nSBCode)
{
case SB_LINEUP:
pos -= 1;
break;
// 如果向右滚动一列,则pos加1
case SB_LINEDOWN:
pos += 1;
break;
// 如果向左滚动一页,则pos减10
case SB_PAGEUP:
pos -= 10;
break;
// 如果向右滚动一页,则pos加10
case SB_PAGEDOWN:
pos += 10;
break;
case SB_TOP: // 如果滚动到最左端,则pos为1
pos = 1;
break;
case SB_BOTTOM: // 如果滚动到最右端,则pos为100
pos = 100;
break;
case SB_THUMBPOSITION: // 如果拖动滚动块滚动到指定位置,则pos赋值为nPos的值
pos = nPos;
SetDlgItemInt(IDC_EDIT_DISPLACE, pos);
GetDlgItem(IDC_EDIT_DISPLACE)->Invalidate();
m_ScrollBar.SetScrollPos(pos);
//SetDlgItemInt(IDC_EDIT_DISPLACE, pos);
//return;
break;
// 下面的m_horiScrollbar.SetScrollPos(pos);执行时会第二次进入此函数,最终确定滚动块位置,并且会直接到default分支,所以在此处设置编辑框中显示数值
default:
SetDlgItemInt(IDC_EDIT_DISPLACE, pos);
GetDlgItem(IDC_EDIT_DISPLACE)->Invalidate();
m_ScrollBar.SetScrollPos(pos);
return;
}
m_ScrollBar.SetScrollPos(pos);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}