Перевод делегатов C# из Проекта 2005 в C# 2003
Я пытаюсь скомпилировать в VS2003 тот проект MouseTracking, который был сделан в C# 2005. Я исправил его, за исключением одной строки:
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) {…}
Любая идея, как получить это для компиляции? Я бы очень хотел добавить и настроить несколько вещей.
Большое спасибо.
2 ответа
Похоже, что он использует HookCallback в качестве делегата. В C# 1 вы должны создавать делегаты, используя конструктор делегатов, вы не можете просто использовать имя метода ( как вы можете в C# 2+).
Посмотрите на тип proc
и используйте это для создания нового делегата, вот так:
proc = new LowLevelMouseProc(HookCallBack);