C#实现Winform无边框移动的方法

2019-12-26 13:13:08丽君

易采站长站为您分析C#实现Winform无边框移动的方法,涉及C#针对WinForm窗口操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#实现Winform无边框移动的方法。。具体如下:

 

 
  1. const int HTLEFT = 10;  const int HTRIGHT = 11; 
  2. const int HTTOP = 12;  const int HTTOPLEFT = 13; 
  3. const int HTTOPRIGHT = 14;  const int HTBOTTOM = 15; 
  4. const int HTBOTTOMLEFT = 0x10;  const int HTBOTTOMRIGHT = 17; 
  5. protected override void WndProc(ref Message m)  { 
  6. switch (m.Msg)  { 
  7. case 0x0084:  base.WndProc(ref m); 
  8. Point vPoint = new Point((int)m.LParam & 0xFFFF,  (int)m.LParam >> 16 & 0xFFFF); 
  9. vPoint = PointToClient(vPoint);  if (vPoint.X <= 5) 
  10. if (vPoint.Y <= 5)  m.Result = (IntPtr)HTTOPLEFT; 
  11. else if (vPoint.Y >= ClientSize.Height - 5)  m.Result = (IntPtr)HTBOTTOMLEFT; 
  12. else m.Result = (IntPtr)HTLEFT;  else if (vPoint.X >= ClientSize.Width - 5) 
  13. if (vPoint.Y <= 5)  m.Result = (IntPtr)HTTOPRIGHT; 
  14. else if (vPoint.Y >= ClientSize.Height - 5)  m.Result = (IntPtr)HTBOTTOMRIGHT; 
  15. else m.Result = (IntPtr)HTRIGHT;  else if (vPoint.Y <= 5) 
  16. m.Result = (IntPtr)HTTOP;  else if (vPoint.Y >= ClientSize.Height - 5) 
  17. m.Result = (IntPtr)HTBOTTOM;  break; 
  18. case 0x0201://鼠标左键按下的消息   m.Msg = 0x00A1;//更改消息为非客户区按下鼠标  
  19. m.LParam = IntPtr.Zero;//默认值   m.WParam = new IntPtr(2);//鼠标放在标题栏内  
  20. base.WndProc(ref m);  break; 
  21. default:  base.WndProc(ref m); 
  22. break;  }