protected override void WndProc(ref Message m)
{
if (_stage == Stage.Stopped || _stage == Stage.Editing)
{
if (m.Msg == (int)WM_NCHITTEST)
{
#region Hit Test
// Trap WM_NCHITTEST
Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
pos = this.PointToClient(pos);
//Bottom Left
if (pos.X <= cGrip && pos.Y >= this.ClientSize.Height - cGrip)
{
m.Result = (IntPtr)HitTest.HTBOTTOMLEFT;
return;
}
//Bottom Right
else if (pos.X >= this.ClientSize.Width - cGrip &&
pos.Y >= this.ClientSize.Height - cGrip)
{
m.Result = (IntPtr)HitTest.HTBOTTOMRIGHT;
return;
}
//Top Left
else if (pos.Y <= cBorder && pos.X <= cBorder)
{
m.Result = (IntPtr)HitTest.HTTOPLEFT;
return;
}
//Top Right
else if (pos.Y <= cBorder && pos.X >= this.ClientSize.Width - cBorder)
{
m.Result = (IntPtr)HitTest.HTTOPRIGHT;
return;
}
//Top
else if (pos.Y <= cBorder)
{
m.Result = (IntPtr)HitTest.HTTOP;
return;
}
//Caption
else if (pos.Y < cCaption && pos.X > 50 && pos.Y < ClientSize.Width)
{
m.Result = (IntPtr)HitTest.HTCAPTION;
return;
}
//Bottom
else if (pos.Y >= this.ClientSize.Height - cBorder)
{
m.Result = (IntPtr)HitTest.HTBOTTOM;
return;
}
//Left
else if (pos.X <= cBorder)
{
m.Result = (IntPtr)HitTest.HTLEFT;
return;
}
//Right
else if (pos.X >= this.ClientSize.Width - cBorder)
{
m.Result = (IntPtr)HitTest.HTRIGHT;
return;
}
#endregion
}
}
base.WndProc(ref m);
}