[C#]无边框窗体缩放的虚线框怎么实现

protected override void WndProc(ref Message m)
  {
  switch (m.Msg)
  {
  case 0xA3://拦截鼠标非客户区左键双击消息,决定窗体是否最大化显示
  if (this.MaximizeBox)
  {
  base.WndProc(ref m);
  }
  return;
  case 0x84:
  base.WndProc(ref m);
  Point lpint = new Point((int)m.LParam);
  lpint.Offset(-this.Left,-this.Top);
  //设置可托动的区域
  Rectangle Client = new Rectangle(0, 3,this.Width,25);
  if ( Client.Contains(lpint))
  {
  m.Result = (IntPtr)0x2;
  return;
  }
  Rectangle topboder=new Rectangle(0,0,this.Width,3);
  if(topboder.Contains(lpint))
  {
  m.Result=(IntPtr)0xC;//上边框HTTOP,上方的窗体缩放
  return;
  }
  return;  
   
  }
  base.WndProc(ref m);
  }
//使用方法,直接将此函数复制于窗体代码中,将此窗体设为无边框
//由于时间关系,窗体缩放只写了上面的,其它方向一样,值不一样下面一一给出
//HTTOP=12 <0xC> 
//HTTOPLEFT=13 <0xD> 
//HTTOPRIGHT=14 <0xE> 
//HTLEFT=10 <0xA> 
//HTRIGHT=11 <0xB> 
//HTBOTTOM=15 <0xF>
//HTBOTTOMLEFT=16 <0x10> 
HTBOTTOMRIGHT=17 <0x11>

你可能感兴趣的:([C#]无边框窗体缩放的虚线框怎么实现)