2009-07-20 5 views
1

Je suis en train de compiler dans VS2003 que mouseTracking projet qui a été fait en C# 2005. Je l'ai fixé vers le haut, sauf pour une ligne:Translating C# Les délégués de 2005 Projet à C# 2003

proc = HookCallback; 

Cela donne l'erreur Method 'MouseTracking.MouseTracker.HookCallback(int, System.IntPtr, System.IntPtr)' referenced without parentheses

Si j'ajoute à parantheses HookCallback, je reçois No overload for method 'HookCallback' takes '0' arguments

J'ai essayé d'ajouter les arguments de la fonction comme types, noms de variables, et les deux , mais aucun ne semble fonctionner.

Voici les définitions pertinentes:

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

Toute idée comment obtenir ce pour compiler? J'aimerais vraiment ajouter et modifier quelques petites choses.

Merci beaucoup.

Répondre

3

Il semble que HookCallback soit utilisé en tant que délégué. En C# 1 vous devez créer des délégués en utilisant un constructeur délégué, vous ne pouvez pas simplement utiliser le nom de la méthode (like you can in C# 2+).

Jetez un coup d'oeil au type de proc, et l'utiliser pour créer un nouveau délégué, comme suit:

proc = new LowLevelMouseProc(HookCallBack); 
+0

Merci beaucoup, qui a travaillé et logique. (Je viens du C++, donc j'ai fait très peu de choses en C#). Merci encore. – Synetech

4
prot = new LowLevelMouseProc(HookCallBack); 
Questions connexes