protected override void WndProc(ref Message msg)
{
// Pass message to default handler.
base.WndProc(ref msg);
if (msg.Msg == WM_VSCROLL || msg.Msg == WM_MOUSEWHEEL )
{
if (this.AssociatedListView != null)
{
if (!GlobalVars.Redirect)
GlobalVars.Redirect = true;
else
GlobalVars.Redirect = false;
if (GlobalVars.Redirect)
{
SendMessage(this.AssociatedListView.Handle,
(uint)msg.Msg, (uint)msg.WParam.ToInt64(),
(uint)msg.LParam.ToInt64());
int TopVisLine1 = SendMessage(this.Handle, LVM_GETTOPINDEX, 0, 0);
int TopVisLine2 = SendMessage(this.AssociatedListView.Handle, LVM_GETTOPINDEX, 0, 0);
// if (msg.WParam.ToInt32() == SB_THUMBTRACK
// || msg.WParam.ToInt32() == SB_THUMBPOSITION)
{
SCROLLINFO si = new SCROLLINFO();
si.fMask = SIF_ALL;
si.cbSize = Marshal.SizeOf(si);
if (GetScrollInfo(this.Handle, SBS_VERT, ref si) != 0)
{
SetScrollInfo(AssociatedListView.Handle, SBS_VERT, ref si, true);
if (TopVisLine1 != TopVisLine2)
{
//need to get pixel of each line
int Dif = (TopVisLine1 - TopVisLine2) * 9;
SendMessage(this.AssociatedListView.Handle, LVM_SCROLL, 0, (uint)Dif);
}
}
}
}
}