Перевод делегатов 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);
prot = new LowLevelMouseProc(HookCallBack);
Другие вопросы по тегам