110,533
社区成员
发帖
与我相关
我的任务
分享
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);
}
}