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消息

这是为什么呢?
...全文
288 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyug 2012-04-28
  • 打赏
  • 举报
回复
这个很难呀?
内容概要:本文研究了基于元胞神经网络配流与DQN强化学习的公交线网扰动韧性恢复方法,提出了一种协同模型,通过元胞神经网络进行交通流量分配,并结合DQN(深度Q网络)强化学习优化调度策略,以应对公交网络突发扰动(如线路断、客流突变等)下的系统恢复问题。该模型在Matlab平台上实现了仿真验证,结果表明其在提升公交线网运行韧性、加快系统恢复速度、优化资源配置方面具有显著效果。研究涵盖模型构建、算法设计、仿真实验与结果分析全过程,体现了智能算法在城市交通管理的深度融合与应用价值。; 适合人群:具备一定交通工程、智能优化算法或强化学习基础知识,从事智慧交通、城市规划、运筹优化等相关领域研究的研发人员及高校研究生。; 使用场景及目标:①解决城市公交网络在突发事件下的快速恢复与调度优化问题;②探索元胞神经网络与DQN强化学习在复杂交通系统建模与决策的协同机制;③为智能公共交通管理系统提供算法支持与仿真验证工具。; 阅读建议:建议结合Matlab代码与文模型框架同步阅读,重点关注元胞神经网络的配流机制与DQN奖励函数的设计逻辑,通过调整扰动场景参数进行仿真实验,深入理解算法在不同工况下的适应性与优化效果。

111,129

社区成员

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

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

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