Reverberations

.NET : Smooth Scrolling Panel

Posted in .net, Coding by Brajesh on January 10th, 2006

Windows raises ThumbTrack ScrollEvent while dragging Scrollbar. And if your System Visual Effects are optimized for performance, window contents are updated only when scollbar stops ( unlike browser)- that looks ugly and annoying.

To solve this I just substituted all SB_THUMBTRACK messeges with SB_THUMBPOSITION. Not very pretty, but works. The following code is in C#.

public class ScrollPanel : System.Windows.Forms.Panel
{
private const int WM_HSCROLL = 0×114;
private const int WM_VSCROLL = 0×115;

protected override void WndProc (ref Message m)
{
if ((m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
&& (((int)m.WParam & 0xFFFF) == 5))
{
// Change SB_THUMBTRACK to SB_THUMBPOSITION
m.WParam = (IntPtr)(((int)m.WParam & ~0xFFFF) | 4);
}
base.WndProc (ref m);
}
}

One Response to '.NET : Smooth Scrolling Panel'

Subscribe to comments with RSS or TrackBack to '.NET : Smooth Scrolling Panel'.

  1. gabe said, on February 8th, 2008 at 8:58 pm

    Can you please help me on your smooth scrolling example. or send me the example project ? basically im using compact framework and have panel with conrols on it… and i have a vScrollBar control and i want to make the scrolling smooth not choppy repaint. thanks a million

Leave a Reply