五. 滚动条的响应代码
控件上添加了滚动条, 只是让滚动条显示, 但没有响应. 响应就是你点击滚动条时, 根据滚动条的位置, 显示对应内容, 并且你需要设置滚动条的位置.
所以响应函数需要做两件事情:
A. 设置滚动条到响应位置.(如果需要);
B. 根据滚动条的响应位置设置要显示的内容的位置.
5.1 定义滚动条位置设置函数
void CMyCtrl::SetScrollBarsPos(int nScrollBar, int nPos)
{
SCROLLINFO siSet;
siSet.cbSize = sizeof(SCROLLINFO);
siSet.fMask = SIF_POS;
siSet.nPos = nPos;
SetScrollInfo(nScrollBar, &siSet, true);
}
5.2 重载垂直滚动条响应函数
void CMyCtrl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// 获取滚动条最新位置
SCROLLINFO siGet;
siGet.cbSize = sizeof(SCROLLINFO);
GetScrollInfo(SB_VERT, &siGet, SIF_TRACKPOS | SIF_POS | SIF_RANGE | SIF_PAGE);
switch(nSBCode)
{
case SB_THUMBPOSITION: // 拖动滚动块时产生的事件
case SB_THUMBTRACK:
{
// siGet.nTrackPos就是滚动条最新位置
// 设置滚动条最新位置