OnVScroll的通常处理

void CDialogLAMP::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO:  在此添加消息处理程序代码和/或调用默认值
	SCROLLINFO scrollinfo;

	GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

	switch (nSBCode)

	{

	case SB_BOTTOM:

		ScrollWindow(0, (scrollinfo.nPos - scrollinfo.nMax) * 10);

		scrollinfo.nPos = scrollinfo.nMax;

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		break;

	case SB_TOP:

		ScrollWindow(0, (scrollinfo.nPos - scrollinfo.nMin) * 10);

		scrollinfo.nPos = scrollinfo.nMin;

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		break;

	case SB_LINEUP:

		scrollinfo.nPos -= 1;

		if (scrollinfo.nPos < scrollinfo.nMin)

		{

			scrollinfo.nPos = scrollinfo.nMin;

			break;

		}

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		ScrollWindow(0, 10);

		break;

	case SB_LINEDOWN:

		scrollinfo.nPos += 1;

		if (scrollinfo.nPos > scrollinfo.nMax)

		{

			scrollinfo.nPos = scrollinfo.nMax;

			break;

		}

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		ScrollWindow(0, -10);

		break;

	case SB_PAGEUP:

		scrollinfo.nPos -= 5;

		if (scrollinfo.nPos < scrollinfo.nMin)

		{

			scrollinfo.nPos = scrollinfo.nMin;

			break;

		}

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		ScrollWindow(0, 10 * 5);

		break;

	case SB_PAGEDOWN:

		scrollinfo.nPos += 5;

		if (scrollinfo.nPos > scrollinfo.nMax)

		{

			scrollinfo.nPos = scrollinfo.nMax;

			break;

		}

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		ScrollWindow(0, -10 * 5);

		break;

	case SB_ENDSCROLL:

		// MessageBox("SB_ENDSCROLL"); 

		break;

	case SB_THUMBPOSITION:

		// ScrollWindow(0,(scrollinfo.nPos-nPos)*10); 

		// scrollinfo.nPos = nPos; 

		// SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 

		break;

	case SB_THUMBTRACK:

		ScrollWindow(0, (scrollinfo.nPos - nPos) * 10);

		scrollinfo.nPos = nPos;

		SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL);

		break;

	}



	CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
原文地址:https://www.cnblogs.com/beginner/p/4513989.html