只有在nSBCode为SB_THUMBPOSITION or SB_THUMBTRACK时,nPos才有意义;其他消息中用GetScrollPos或者GetScrollInfo获取当前位置,然后根据nSBCode类型修改位置,最后用SetScrollPos或者SetScrollInfo设置修改滚动条位置。至于你的窗口怎么来响应滚动条位置的改变,又是另外一回事情了。一般是刷新,然后在绘图函数中根据当前滚动条位置修改绘图坐标。也可以用ScrollWindow/ScrollDC函数滚动窗口,但是滚动后刷新部分需要重新绘制。
· SB_VERT 获取垂直滚动条的位置。
说明:
这个函数获得滚动条的滚动块的当前位置。当前位置是一个相对值,依赖于当前的滚动范围。例如,如果滚动范围是50到100,并且滚动块位于滚动条的中间,则当前位置为75。请参阅:::GetScrollPos, CScrollBar::GetScrollPos
获得位置的话可以用GetScrollPos()
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
RECT r;
GetClientRect(&r);
m_ScrollBar.Create(SBS_VERT | SBS_TOPALIGN | WS_CHILD | WS_VISIBLE,r,this,100);
//m_ScrollBar.SetScrollRange(0,100);
SCROLLINFO scrollinfo;
scrollinfo.cbSize=sizeof(SCROLLINFO);
scrollinfo.fMask=SIF_ALL;
scrollinfo.nMax=100;
scrollinfo.nMin=0;
scrollinfo.nPage=2;
scrollinfo.nPos=50;
scrollinfo.nTrackPos=2;
m_ScrollBar.SetScrollInfo(&scrollinfo); return 0;
}void CShowImageView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
ScrollWindow(0,nPos);
CView::OnVScroll(nSBCode, nPos, pScrollBar);
}
这样做了,但是一拖动滚动条,,就把那个滚动条整个拖下来了(就是那个顶端的小三角尖都滑下来了!),怎么回事?》?