首页 > 编程 > C# > 正文

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

2019-10-29 21:38:49
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#实现Winform无边框移动的方法,涉及C#针对WinForm窗口操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#实现Winform无边框移动的方法。分享给大家供大家参考。具体如下:

 

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

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表