2009-07-20 3 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

4
prot = new LowLevelMouseProc(HookCallBack);