有一个第三方控件Devexpress 的TextEdit
用Spy ++可以看到有 WM_Paste事件,但是用代码却不能得到这个消息代码如下       private const int WM_GETTEXT = 0x000d;
        private const int WM_COPY = 0x0301;
        private const int WM_PASTE = 0x0302;
        private const int WM_CONTEXTMENU = 0x007B;
        private const int WM_RBUTTONDOWN = 0x0204;
        public const int WM_CHAR = 0x0102;
        public const int GWL_WNDPROC = -4;
        public delegate IntPtr NewWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, NewWndProc wndproc);        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
        //没用到
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);        private NewWndProc wpr = null;        //备份的默认处理函数
        private IntPtr oldWndProc = IntPtr.Zero; private IntPtr GridControlWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr returnVar = IntPtr.Zero;
            switch (msg)
            {
                case WM_PASTE:                     
                   IDataObject iData = Clipboard.GetDataObject();
                    if (iData.GetDataPresent(DataFormats.Text))
                    {
                                                string str;
                        str = (String)iData.GetData(DataFormats.Text);
                                       
                    }
                    return (IntPtr)0;
              }
            // 回调备份的默认处理的函数 
            returnVar = CallWindowProc(oldWndProc, hWnd, msg, wParam, lParam);
            return returnVar; 
        }
        private void gridView1_ShownEditor(object sender, EventArgs e)
        {
            if (gridView1.ActiveEditor != null&& gridView1.ActiveEditor is DevExpress.XtraEditors.TextEdit)
            {
                oldWndProc = GetWindowLong(textEdit1.Handle, GWL_WNDPROC);
                wpr = new NewWndProc(this.GridControlWndProc);
                oldWndProc = SetWindowLong(textEdit1.Handle, GWL_WNDPROC, wpr);
            }
        }断点的时候也有事件~~
也挺多,但是却没有WM_PASTE消息这是为什么呢?