在初始化对话框里,首先对滑动条进行初始化,并绑定控件变量
SCROLLINFO si={0};//滚动条结构
si.cbSize=sizeof(si);
si.fMask=SIF_RANGE|SIF_PAGE;//范围,从左边到右边
si.nMin=0; //最小值
si.nMax=100; //最大值
si.nPage=10;//每滚动一页,走了10,间隔
m_scroll.SetScrollInfo(&si); //将si传到关联的变量m_scroll里面
在对话框属性消息列表里添加WM_HSCROLL(水平滚动),编辑函数
void Cdemo8Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
SCROLLINFO si={0}; //在处理滚动条消息之前,先取得滚动条的状态信息
si.cbSize=sizeof(si);
si.fMask=SIF_ALL; //取得它的所有状态
pScrollBar->GetScrollInfo(&si);//获得当前滚动条信息,pScrollBar表示当前滚动条,函数表示获得滚动条信息,信息在si里
int nNewPos=si.nPos; //滚动条的最新位置
switch(nSBCode) //选择滚动条消息
{
case SB_THUMBTRACK: //拉动滚动条
nNewPos=nPos; //最新的位置就等于当前位置,nPos变量在函数形参里
break;
case SB_LINELEFT: //点击左箭头
nNewPos-=1;
break;
case SB_LINERIGHT: //点击右箭头
nNewPos+=1;
break;
case SB_PAGELEFT: //空白处左翻页,页的大小在初始化时已设置为10
nNewPos-=si.nPage;
break;
case SB_PAGERIGHT: //空白处右翻页
nNewPos+=si.nPage;
break;
default:
break;
}
pScrollBar->SetScrollPos(nNewPos); //将新的状态传递给滚动条,这样才能起作用,在此之前可以进行一个范围检查
CString output;
output.Format(_T("%d"),nNewPos);
m_pos=output; //m_pos是静态文本关联的value变量,就可以显示出来了
UpdateData(FALSE);
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}