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

     这个问题也是来自论坛提问,同样是.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. }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值