2009-07-20 51 views
1

我试图在VS2003来编译MouseTracking项目,该项目在C#中取得2005年我有它固定起来,除了一条线:翻译C#的代表,从2005年项目到C#2003

proc = HookCallback; 

这给了错误Method 'MouseTracking.MouseTracker.HookCallback(int, System.IntPtr, System.IntPtr)' referenced without parentheses

如果我加括号来HookCallback,我得到No overload for method 'HookCallback' takes '0' arguments

我已经尝试添加函数的参数作为类型,变量名,无一不,但似乎没有工作。

下面是相关的定义:

private LowLevelMouseProc proc; 
    private delegate IntPtr LowLevelMouseProc (int nCode, IntPtr wParam, IntPtr lParam); 
    private   IntPtr HookCallback  (int nCode, IntPtr wParam, IntPtr lParam) {…} 

任何想法如何得到这个编译?我真的想添加和调整一些东西。

非常感谢。

回答

3

它看起来像是使用HookCallback作为委托。在C#1中,您必须使用委托构造函数创建委托,您不能只使用方法名称(like you can in C# 2+)。

看看的proc类型,并用它来创建一个新的委托,就像这样:

proc = new LowLevelMouseProc(HookCallBack); 
+0

非常感谢,这工作,是有道理的。 (我来自C++,所以我在C#中做的很少)。 再次感谢。 – Synetech 2009-07-20 16:36:34

4
prot = new LowLevelMouseProc(HookCallBack);