关于消息函数替换的一个问题

funxu 2012-02-01 10:43:29
delphi里很简单的两句代码,目的就是替换窗体默认的消息处理函数,转成C#后出现了错误,请问各位知道如何修改么?

WndProcDelegate newWndProc = new WndProcDelegate(NewWndProc);
SetWindowLong(this.Handle, GWL_WNDPROC, Marshal.GetFunctionPointerForDelegate(newWndProc));

//错误是经常出现以下提示,从提示看来知道了错误原因是垃圾回收器搞得鬼有谁知道如何修改么?
A callback was made on a garbage collected delegate of type 'WindowsFormsApplication2!WindowsFormsApplication2.Form1+WndProcDelegate::Invoke'. This may cause application crashes, corruption and data loss. When passing delegates to unmanaged code, they must be kept alive by the managed application until it is
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
funxu 2012-02-01
  • 打赏
  • 举报
回复
求人不如求己,搞定,自己解决,延长代理的生命周期就可以了
funxu 2012-02-01
  • 打赏
  • 举报
回复
网页转换时出错了,最后一句应该是是
SetWindowLong(this.Handle, GWL_WNDPROC,Marshal.GetFunctionPointerForDelegate(newWndProc));
熙风 2012-02-01
  • 打赏
  • 举报
回复
接分啊。。。。。

110,536

社区成员

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

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

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