2009-07-20 20 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);