2009-07-20 16 views
1

Ich versuche, in VS2003 zu kompilieren, dass Mousetracking Projekt, das in C# gemacht wurde 2005. Ich habe es bis auf eine Linie festgelegt auf:Translating C# Delegierten von 2005 Projekt zu C# 2003

proc = HookCallback; 

Dies gibt dem Fehler Method 'MouseTracking.MouseTracker.HookCallback(int, System.IntPtr, System.IntPtr)' referenced without parentheses

Wenn ich Klammern zu HookCallback hinzufügen, bekomme ich No overload for method 'HookCallback' takes '0' arguments

habe ich versucht, die Funktionsargumente als Typen, Variablennamen hinzufügen, und beide , aber keiner scheint zu funktionieren.

Hier sind die entsprechenden Definitionen:

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

Jede Idee, wie diese zu kompilieren? Ich würde gerne ein paar Dinge hinzufügen und optimieren.

Vielen Dank.

Antwort

3

Es sieht aus wie es HookCallback als Delegierter mit wird. In C# 1 müssen Sie Delegaten mit einem Delegate-Konstruktor erstellen, Sie können nicht einfach den Methodennamen (like you can in C# 2+) verwenden.

einen Blick auf die Art der proc, Nehmen und einen neuen Delegaten erstellen verwenden, etwa so:

proc = new LowLevelMouseProc(HookCallBack); 
+0

Vielen Dank, die Sinn gearbeitet und macht. (Ich komme aus C++, also habe ich in C# sehr wenig getan). Danke nochmal. – Synetech

4
prot = new LowLevelMouseProc(HookCallBack);