ITPub博客

首页 > Linux操作系统 > Linux操作系统 > winform获取鼠标当前位置和截取鼠标双击事件

winform获取鼠标当前位置和截取鼠标双击事件

原创 Linux操作系统 作者:fangqm 时间:2011-06-19 22:27:23 0 删除 编辑
1。获取鼠标在窗体中的当前坐标
    
2.获取鼠标在屏幕中的位置
 
 
用个timer控件去获取即可
  label1.Text = Cursor.Position.X.ToString() + ":" + Cursor.Position.Y.ToString();
 
 
拦截这个控件的双击消息。

以下代码可加在控件的父窗口(假设为Form1),并在Form1初始化后安装拦截挂钩。同样的方法也可屏蔽那控件的其它消息,如屏蔽它的右键事件。

private const int GWL_WNDPROC = -4;
private const int WM_LBUTTONDOWN=0x0201;
private const int WM_LBUTTONUP=0x0202;
private const int WM_LBUTTONDBLCLK=0x0203;//双击消息


[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, MyWndProc wndProc);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);


public delegate IntPtr MyWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

private IntPtr ldWndProc = IntPtr.Zero;
private MyWndProc Wpr = null;

private IntPtr MyControlWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
        switch (msg)
        {
           case WM_LBUTTONDBLCLK://拦截双击消息

            /*在这里,你想干什么就干什么*/
            .......................
            .......................

            return (IntPtr)0;
           default:
                return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);
         }
}

//假设那个控件变量名为 _thatControl

private void InitializeThatControl()
{
     //初始化的时候安装消息拦截
     this.Wpr = new MyWndProc(this.MyControlWndProc);
     this.OldWndProc = SetWindowLong(_thatControl.Handle, GWL_WNDPROC, Wpr);
}


public Form1()
{
     InitializeComponent();
     InitializeThatControl();//加这句,在Form初始化后安装消息拦截
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23109131/viewspace-700217/,如需转载,请注明出处,否则将追究法律责任。

下一篇: winform,TextEdit
请登录后发表评论 登录
全部评论

注册时间:2010-03-24

  • 博文量
    298
  • 访问量
    729632