CWnd自带的两个Scroll(H,V)怎么用?

发布时间:2024-05-21 17:59 发布:上海旅游网

问题描述:

以VSCROLL风格Create以后,就有,但是没有显示。
它也有ID吗,怎么得到?

问题解答:

貌似无法得到它的ID
你可以响应WM_SCROLL消息进行操作。
void CWnd::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int h = 10;
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
GetScrollInfo(SB_VERT,&si,SIF_ALL);
int nOldPos = si.nPos;

switch(nSBCode)
{
case SB_LINEDOWN:
si.nPos = min(si.nPos+h, si.nMax);
break;
case SB_PAGEDOWN:
si.nPos = min(si.nPos+h*10, si.nMax);
break;
case SB_LINEUP:
si.nPos = max(si.nPos-h, si.nMin);
break;
case SB_PAGEUP:
si.nPos = max(si.nPos-h*10, si.nMin);
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
case SB_TOP:
si.nPos = si.nMin;
break;
case SB_BOTTOM:
si.nPos = si.nMax;
break;
}
SetScrollInfo(SB_VERT,&si);
GetScrollInfo(SB_VERT,&si);
ScrollWindow(0, nOldPos - si.nPos);

CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
网上随便找的一个例子。

热点新闻