1

我正在尝试在 VS2003 中编译在C# 2005 中制作的MouseTracking项目。我已经修复了它,除了一行:

    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) {…}

知道如何编译它吗?我真的很想添加和调整一些东西。

非常感谢。

4

2 回答 2

4
prot = new LowLevelMouseProc(HookCallBack);
于 2009-07-20T16:27:20.593 回答
3

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

查看 的类型proc,并使用它来创建一个新的委托,如下所示:

proc = new LowLevelMouseProc(HookCallBack);
于 2009-07-20T16:30:29.777 回答