private:
// User declarations
void __fastcall RichNewProc1(TMessage&
Message);
void __fastcall RichNewProc2(TMessage& Message);
__fastcall TForm1::TForm1(TComponent*
Owner)
: TForm(Owner)
{
// 使两个RichEdit大小一样
RichEdit2->Width = RichEdit1->
Width;
RichEdit2->Height = RichEdit1->
Height;
// 接管RichEdit的WidowProc,实现子类化
RichEdit1->WindowProc =
RichNewProc1;
RichEdit2->WindowProc =
RichNewProc2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RichNewProc1(TMessage &
Message)
{
if (Message.Msg == WM_VSCROLL || Message.Msg ==
WM_HSCROLL)
{
DWORD dwWParam =
Message.WParam;
DWORD dwFlag =
0x1000;
// 判断滚动消息是否来自另一个RichEdit
if ((dwWParam & dwFlag) !=
dwFlag)
{
// 如果消息不是来自另一个RichEdit,对Message.WParam添加标志
dwWParam |=
dwFlag;
// 投递滚动消息给另一个RichEdit
::PostMessage(RichEdit2->
Handle, Message.Msg, dwWParam, Message.LParam);
// 更改另一个RichEdit的滚动条滑块位置
if (Message.Msg ==
WM_VSCROLL)
// 竖滚动
::SetScrollPos(RichEdit2->Handle, SB_VERT, Message.WParamHi,
true);
else if (Message.Msg ==
WM_HSCROLL)
// 横滚动
::SetScrollPos(RichEdit2->Handle, SB_HORZ, Message.WParamHi,
true);
}
else
{
Message.WParam = (dwWParam & ~
dwFlag);
}
}
RichEdit1->Dispatch(&
Message);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RichNewProc2(TMessage &
Message)
{
if (Message.Msg == WM_VSCROLL || Message.Msg ==
WM_HSCROLL)
{
DWORD dwWParam =
Message.WParam;
DWORD dwFlag =
0x1000;
// 判断滚动消息是否来自另一个RichEdit
if ((dwWParam & dwFlag) !=
dwFlag)
{
// 如果消息不是来自另一个RichEdit,对Message.WParam添加标志
dwWParam |=
dwFlag;
// 投递滚动消息给另一个RichEdit
::PostMessage(RichEdit1->
Handle, Message.Msg, dwWParam, Message.LParam);
// 更改另一个RichEdit的滚动条滑块位置
if (Message.Msg ==
WM_VSCROLL)
// 竖滚动
::SetScrollPos(RichEdit1->Handle, SB_VERT, Message.WParamHi,
true);
else if (Message.Msg ==
WM_HSCROLL)
// 横滚动
::SetScrollPos(RichEdit1->Handle, SB_HORZ, Message.WParamHi,
true);
}
else
{
Message.WParam = (dwWParam & ~
dwFlag);
}
}
RichEdit2->Dispatch(&
Message);
}
转载于:https://www.cnblogs.com/luyuxibaby/p/5217283.html