天天看点

MFC中实现两个编辑框的滚动条同步

利用GetScrollPos函数获得两个滚动条的位置,然后用LineScroll函数滚动相应的行数就好了

两个编辑控件分别为A和B

在A的事件表里找到EN_VSCROLL事件点击添加就会生成如图的两个事件函数,第一个是A的,在里面写上让B的滚动条和A同步的代码就好了,即让B的滚动条滚动n1-n2行就好了

LineScroll函数的滚动是滚动多少行,正数向下,负数向上,而不是滚动到多少行

void CmyexeDlg::OnEnVscrollEdit1()
{
	int n1 = GetDlgItem(IDC_EDIT1)->GetScrollPos(SB_VERT);
	int n2= GetDlgItem(IDC_EDIT2)->GetScrollPos(SB_VERT);
	if (n1 == n2)return;
	((CEdit *)GetDlgItem(IDC_EDIT2))->LineScroll(n1-n2);
	// TODO: 在此添加控件通知处理程序代码
}


void CmyexeDlg::OnEnVscrollEdit2()
{
	int n1 = GetDlgItem(IDC_EDIT2)->GetScrollPos(SB_VERT);
	int n2 = GetDlgItem(IDC_EDIT1)->GetScrollPos(SB_VERT);
	if (n1 == n2)return;
	((CEdit *)GetDlgItem(IDC_EDIT1))->LineScroll(n1 - n2);
	// TODO: 在此添加控件通知处理程序代码
}
//IDC_EDIT1,IDCEDIT2为两个控件id
           

对于多个控件可以循环处理。