(1)
添加水平滚动条 IDC_SCROLL 变量m_scroll
(2)
静态文本控件
IDC_POS
(3)
OnInitDlg中添加:
// TODO: 在此添加额外的初始化代码
//初始化滚动条模块
SCROLLINFO si={0};
si.cbSize=sizeof(si);
//设置滚动范围和每页大小
si.fMask=SIF_RANGE|SIF_PAGE;
si.nMin=0;
si.nMax=100;
si.nPage=10;
//将信息设置到控件
m_scroll.SetScrollInfo(&si);
(4)为主对话框添加WM_HSCROLL消息响应函数
void CScrollBarDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//取得滚动条当前状态
SCROLLINFO si={0};
si.cbSize=sizeof(si);
si.fMask=SIF_ALL;
pScrollBar->GetScrollInfo(&si);
int nNewPos=si.nPos;
//处理消息
switch(nSBCode)
{
//若拖动了滚动条,参数nPos即滑块的新位置
case SB_THUMBTRACK:
nNewPos=nPos;
break;
//单击了左箭头,向左移动一个位置
case SB_LINELEFT:
nNewPos-=1;
break;
//单击了右箭头
case SB_LINERIGHT:
nNewPos+=1;
break;
//向左翻页
case SB_PAGELEFT:
nNewPos-=si.nPage;
break;
//向右翻页
case SB_PAGERIGHT:
nNewPos+=si.nPage;
break;
default:
break;
}
//将新位置设置到控件
if(nNewPos>si.nMax)
nNewPos=si.nMax;
if(nNewPos<si.nMin)
nNewPos=si.nMin;
pScrollBar->SetScrollPos(nNewPos);
//显示新位置
TCHAR szOutput[128]={0};
_stprintf(szOutput,_T("当前:%d"),nNewPos);
SetDlgItemText(IDC_POS,szOutput);
}