protected virtual bool HandleNCHitTest(ref Message m)
{
int x = Control.LowOrder((int)m.LParam.ToInt32());
int y = Control.HighOrder((int)m.LParam.ToInt32());
NCPointToClient(ref x, ref y);
FormPos pos = FormPosForCoords(x, y);
if (pos == FormPos.TitleBar)
{
m.Result = new IntPtr((int)HitTest.HTCAPTION);
return(true);
}
if (!IsSizable)
{
return(false);
}
switch (pos)
{
case FormPos.Top:
m.Result = new IntPtr((int)HitTest.HTTOP);
break;
case FormPos.Left:
m.Result = new IntPtr((int)HitTest.HTLEFT);
break;
case FormPos.Right:
m.Result = new IntPtr((int)HitTest.HTRIGHT);
break;
case FormPos.Bottom:
m.Result = new IntPtr((int)HitTest.HTBOTTOM);
break;
case FormPos.TopLeft:
m.Result = new IntPtr((int)HitTest.HTTOPLEFT);
break;
case FormPos.TopRight:
m.Result = new IntPtr((int)HitTest.HTTOPRIGHT);
break;
case FormPos.BottomLeft:
m.Result = new IntPtr((int)HitTest.HTBOTTOMLEFT);
break;
case FormPos.BottomRight:
m.Result = new IntPtr((int)HitTest.HTBOTTOMRIGHT);
break;
default:
// We return false so that DefWndProc handles things
return(false);
}
return(true);
}