Salve a tutti,
Sto tentando di fare un programma che mi gestisca una periferica utilizzando le librerie e il materiale che la casa mi ha messo a disposizione. Tra le cose che ho trovato in rete c'è il sorgente di un piccolo applicativo scritto in Visual Basic 6.0 e iniziando da quello ho pensato di costruire il mio in VB.NET. Il mio problema è che ad un certo punto devo dichiarare una funzione di una libreria che a sua volta dovrà chiamare una mia funzione che (da quel che ho capito) si chiama "delagata". Lascio spazio al codice che è più chiaro:
codice:
Private Declare Function GUICallbacks Lib "PvFw.dll" ( _
ByVal ModuleHandle As Long, ByVal GuiStreamingCasllback As Long, _
ByVal GuiStreamingCallbackCtx As Long, ByVal GuiStateCallback As Long, _
ByRef GuiStateCallbackCtx As Long) As Long
Per utilizzare questa funzione mi portano in codice Visual Basic 6.0:
codice:
'Usage
Dim ret As Long
ret = GUICallbacks(myHandle, 0&, 0&, AddressOf GUI_STATE_CALLBACK, 0&)
End Sub
'dove mi dicono che
Public Sub GUI_STATE_CALLBACK (ByVal GuiStateCallbackCtx As Long, _
ByVal GuiState As Long, ByVal Response As Byte, _
ByVal Message As Long, ByVal Progress As Byte, _
ByVal SampleBuffer As Long)
Dim msg As String
Select Case Message
Case &H2030200
Msg = ...
End Select
'Display Guidance message
Form1.Label1.Caption = GuidanceMsg 'Exemle
End Sub
Se io tento di riportare nel mio progetto un codice simile quando chiamo la funzione GUICallbacks(myHandle, 0&, 0&, AddressOf GUI_STATE_CALLBACK, 0&) mi segnala che "l'espressione 'AddressOf' non può essere convertita in 'Long' perché 'Long' non è un tipo delegato.
Ho provato a vedere se creando un tipo "delegate" riuscivo a farlo diventare un Long (che dovrebbe essere un puntatore alla cella di memoria che contiene la funzione) ma il fatto che stia scrivendo qui è la prova che non ci sono riuscito.
Questa volta sono proprioo disperato. Utilizzo Visual Basic 2008 Professioal edition.