Traduzindo delegados C# do projeto 2005 para C# 2003
-
18-09-2019 - |
Pergunta
Estou tentando compilar no VS2003 isso Rastreamento de mouse projeto que foi feito em C# 2005.Eu consertei tudo, exceto por uma linha:
proc = HookCallback;
Isso dá o erroMétodo 'MouseTracking.MouseTracker.HookCallback(int, System.IntPtr, System.IntPtr)' referenciado sem parênteses
Se eu adicionar parênteses ao HookCallback, receboNenhuma sobrecarga para o método 'HookCallback' leva argumentos '0'
Tentei adicionar os argumentos da função como tipos, nomes de variáveis e ambos, mas nenhum parece funcionar.
Aqui estão as definições relevantes:
private LowLevelMouseProc proc;
private delegate IntPtr LowLevelMouseProc (int nCode, IntPtr wParam, IntPtr lParam);
private IntPtr HookCallback (int nCode, IntPtr wParam, IntPtr lParam) {…}
Alguma idéia de como compilar isso?Eu realmente gostaria de adicionar e ajustar algumas coisas.
Muito obrigado.
Solução
Parece que está usando HookCallback como delegado.Em C# 1 você precisa criar delegados usando um construtor delegado, você não pode simplesmente usar o nome do método (como você pode em C# 2+).
Dê uma olhada no tipo de proc
, e use isso para criar um novo delegado, assim:
proc = new LowLevelMouseProc(HookCallBack);
Outras dicas
prot = new LowLevelMouseProc(HookCallBack);