Traducendo C # delegati dal 2005 Project per C # 2003
-
18-09-2019 - |
Domanda
Sto cercando di compilare in VS2003 che MouseTracking progetto che è stato fatto in C # 2005. Ce l'ho sistemato ad eccezione di una sola riga:
proc = HookCallback;
In questo modo il Method 'MouseTracking.MouseTracker.HookCallback(int, System.IntPtr, System.IntPtr)' referenced without parentheses
errore
Se aggiungo parantheses a HookCallback, ottengo No overload for method 'HookCallback' takes '0' arguments
Ho provato ad aggiungere gli argomenti della funzione come tipi, nomi di variabili, ed entrambi, ma nessuno sembra funzionare.
Ecco le pertinenti definizioni:
private LowLevelMouseProc proc;
private delegate IntPtr LowLevelMouseProc (int nCode, IntPtr wParam, IntPtr lParam);
private IntPtr HookCallback (int nCode, IntPtr wParam, IntPtr lParam) {…}
Qualsiasi idea di come ottenere questo per compilare? Mi piacerebbe molto aggiungere e modificare un paio di cose.
Grazie mille.
Soluzione
Sembra che sta utilizzando HookCallback come delegato. In C # 1 è necessario creare i delegati utilizzando un costruttore delegato, non si può semplicemente utilizzare il nome del metodo ( come è possibile in C # 2+ ).
Date un'occhiata al tipo di proc
, e l'uso che per creare un nuovo delegato, in questo modo:
proc = new LowLevelMouseProc(HookCallBack);
Altri suggerimenti
prot = new LowLevelMouseProc(HookCallBack);