#endregion
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
this.label1.Text +=e.Control.GetType().Name;
if (e.Control.GetType().Name == "MdiClient")
{
MdiClient mc = (MdiClient)e.Control;
mc.Dock = DockStyle.None;
mc.ClientSize = new Size(new Point(this.Width - 2, this.Height - 2));
mc.Location = new Point(1, 1);
}
}
//窗体缩放
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch (m.Msg)
{
//ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_nchittest.htm
case WM_NCHITTEST:
Point vPoint = new Point((int)m.LParam & 0xFFFF,
(int)m.LParam >> 16 & 0xFFFF);
vPoint = PointToClient(vPoint);
if (vPoint.X <= 5)
if (vPoint.Y <= 5)
m.Result = (IntPtr)HTTOPLEFT;
else if (vPoint.Y >= ClientSize.Height - 5)
m.Result = (IntPtr)HTBOTTOMLEFT;
else m.Result = (IntPtr)HTLEFT;
else if (vPoint.X >= ClientSize.Width - 5)
if (vPoint.Y <= 5)
m.Result = (IntPtr)HTTOPRIGHT;
else if (vPoint.Y >= ClientSize.Height - 5)
m.Result = (IntPtr)HTBOTTOMRIGHT;
else m.Result = (IntPtr)HTRIGHT;
else if (vPoint.Y <= 5)
m.Result = (IntPtr)HTTOP;
else if (vPoint.Y >= ClientSize.Height - 5)
m.Result = (IntPtr)HTBOTTOM;
break;
}
}
主要是由于mdi的窗体挡住了主窗体form 导致重写的WndProc接受不到windows消息,重写OnControlAdded 将mdi窗体控件缩小1像素