如何通过鼠标控制无标头窗体

     这个问题也是来自论坛提问,同样是.Net WinForm新手的问题,这样的问题如果在Deplphi这样的板块立刻就被秒杀了,可是.Net版知道的人好像不太多。

介绍两个方法,一个是发送SC_Move消息,一个是改变鼠标区域消息

方法一:

  1. using  System;
  2. using  System.Collections.Generic;
  3. using  System.ComponentModel;
  4. using  System.Data;
  5. using  System.Drawing;
  6. using  System.Text;
  7. using  System.Windows.Forms;
  8. using  System.Runtime.InteropServices;
  9. namespace  WindowsApplication1
  10. {
  11.      public  partial  class  Form1 : Form
  12.     {
  13.          public  Form1()
  14.         {
  15.             InitializeComponent();
  16.         }
  17.         [DllImport( "user32.dll" , EntryPoint =  "SendMessage" )]
  18.          public   static   extern   int  SendMessage( int  hWnd,  int  wMsg,  int  wParam,  int  lParam);
  19.         [DllImport( "user32.dll" , EntryPoint =  "ReleaseCapture" )]
  20.          public   static   extern   int  ReleaseCapture();
  21.          public   const   int  WM_SysCommand = 0x0112;
  22.          public   const   int  SC_MOVE = 0xF012;
  23.          private   void  Form1_MouseDown( object  sender, MouseEventArgs e)
  24.         {
  25.             ReleaseCapture();
  26.             SendMessage( this .Handle.ToInt32(), WM_SysCommand, SC_MOVE, 0);
  27.         }
  28.          private   void  Form1_Load( object  sender, EventArgs e)
  29.         {
  30.         }
  31.     }
  32. }

方法二:

  1. using  System;
  2. using  System.Windows.Forms;
  3. namespace  WindowsApplication1
  4. {
  5.      public  partial  class  Form1 : Form
  6.     {
  7.          public  Form1()
  8.         {
  9.             InitializeComponent();
  10.         }
  11.          protected   override   void  WndProc( ref  Message m)
  12.         {
  13.              base .WndProc( ref  m);  if  (m.Msg == 0x84)
  14.             {
  15.                  switch  (m.Result.ToInt32())
  16.                 {
  17.                      case  1:
  18.                         m.Result =  new  IntPtr(2);  break ;
  19.                 }
  20.             }
  21.         }
  22.     }
  23. }
原文地址:https://www.cnblogs.com/cl1024cl/p/6204869.html