summary15 scroll

1、CMFCPropertyGridCtrl::OnSelectCombo()

Called by the framework when a property that contains a combo box control is selected.

2、Scroll Control

afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )的参数和作用分析:

https://blog.csdn.net/lanmeng_smile/article/details/25922949

SCROLLINFO结构体:https://www.cnblogs.com/qingergege/p/4983036.html

函数原型:BOOL GetScrolllnfo(HWND hWnd,int fnBar,LPSCROLLINFO lpsi);

参数: hWnd:滚动条控制或有标准滚动条的窗体句柄,由fnBar参数确定。

              fnBar:指定待找回滚动条参数的类型,此参数可以为如下值,其值含义: SB_CTL:找回滚动条控制参数。其中参数hwnd一定是处理滚动条控制的句柄。

             SB_HORZ:找回所指定窗体的标准水平滚动条参数。

             SB_VERT:找回所指定窗体的标准垂直滚动条参数。 lpsi:指向SCROLLINFO结构。
 


void CMFCScrollDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: Add your message handler code here and/or call default
	SCROLLINFO sInfo = { sizeof(SCROLLINFO) };//sInfo.cbSize = sizeof(sInfo);

	if (pScrollBar)
	{
		pScrollBar->GetScrollInfo(&sInfo);
	}
	else
	{
		GetScrollInfo(SB_HORZ, &sInfo);
	}

	switch (nSBCode)
	{
	case(SB_LINELEFT):
	{
		if (sInfo.nPos > sInfo.nMin)
			sInfo.nPos--;
		break;
	}
	case(SB_LINERIGHT):
	{
		if (sInfo.nPos < sInfo.nMax)
			sInfo.nPos++;
		break;
	}
	case(SB_PAGELEFT):
	{
		if (sInfo.nPos > sInfo.nMin)
		{
			sInfo.nPos -= sInfo.nPage;
			if (sInfo.nPos < sInfo.nMin)
				sInfo.nPos = sInfo.nMin;
		}
		break;
	}
	case(SB_PAGERIGHT):
	{
		if (sInfo.nPos < sInfo.nMax)
		{
			sInfo.nPos += sInfo.nPage;
			if (sInfo.nPos > sInfo.nMax)
				sInfo.nPos = sInfo.nMax;
		}
		break;
	}
	case(SB_THUMBPOSITION):
	case(SB_THUMBTRACK):
	{
		sInfo.nPos = nPos;
		break;
	}
	case(SB_LEFT):
	{
		sInfo.nPos = sInfo.nMin;
		break;
	}
	case(SB_RIGHT):
	{
		sInfo.nPos = sInfo.nMax;
		break;
	}
	}

	if (pScrollBar)
		pScrollBar->SetScrollInfo(&sInfo);
	else
		SetScrollInfo(SB_HORZ, &sInfo);

	if (pScrollBar->m_hWnd == m_horiScrollbar.m_hWnd)
	{
		SetDlgItemInt(IDC_HSCROLL_EDIT, pScrollBar->GetScrollPos());
	}

	CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

为什么要写这几句?

if (pScrollBar)
    {
        pScrollBar->GetScrollInfo(&sInfo);
    }
    else
    {
        GetScrollInfo(SB_HORZ, &sInfo);
    }

猜你喜欢

转载自blog.csdn.net/weixin_40236507/article/details/87854360