• 拦截信息方法


    但是你可以拦截这个控件的双击消息。 以下代码可加在控件的父窗口(假设为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 OldWndProc = 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初始化后安装消息拦截

    }

  • 相关阅读:
    数据类型及用法
    NFS与SSH
    nginx服务,nginx反向代理
    rpm软件包管理
    磁盘分区,文件系统,软链接和硬链接,内存和进程管理
    Linux常用命令,文件目录和权限管理
    操作系统与网络协议(day3)
    计算机基础之硬件简介(Day2)
    QT写串口
    485传输
  • 原文地址:https://www.cnblogs.com/zjgtlkj/p/3278646.html
Copyright © 2020-2023  润新知