C# SetWindowLong 中的WM_Paste事件怎么获取不了

zyug 2012-04-19 04:45:13
有一个第三方控件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消息

这是为什么呢?
...全文
216 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyug 2012-04-28
  • 打赏
  • 举报
回复
这个很难呀?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧