Newsgroup: it.comp.lang.visual-basic
Titolo: CallBack function

Ciao a tutti, č possibile creare una callback function in un activeX? Direi
di sě, ma per generare un evento dalla funzione di callback?
Grazie mille
GIuseppe

 Direi di sě, ma per generare un evento dalla funzione di callback?
Se ho capito bene hai bisogno di una funzione che lavori in modo asincrono
rispetto al thread corrente. Se č cosi' puoi creare una finestra invisibile
e postargli dei messaggi privati (nota bene usa PostMessage). A seconda del
messaggio la window procedure triggerera' l' evento corrispondente.
Ciao
Michele

 di sě, ma per generare un evento dalla funzione di callback?
In modo molto limitato si puň, ma cosa ti serve di preciso?
Non mi č chiaro se quello che chiedi sia proprio quello che ti serve.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Ciao
Per prima cosa grazie per aver risposto, la cosa non è semplice. Ho un
controllo ActiveX composto da UserControl e un modulo standard. Nel modulo
standard ho una funzione di callback (me lo impone la scheda di acquisizione
che uso):
Public Sub MyCallack( ...)
...
End sub
Questa funzione scatta quando la scheda genera un interrupt. Generato
l'interrupt vorrei che questa funzione (MyCallBack) generasse a sua volta un
evento, ma dal modulo standard non riesco a "vedere" l'evento che ho
impostato nello UserControl. Infatti se scrivo:
Public Sub MyCallack( ...)
RaiseEvent UserControl.OnData
End sub
chiaramente non funziona. La via sarebbe passare in qualche modo lo
usercontrol, il puntatore forse.
Grazie mille
Giuseppe

 usercontrol, il puntatore forse.
Il RaiseEvent, per quanto ne so, puo' essere usato solo all'interno della
classe che definisce l'evento; in linea di massima, sarebbe sufficiente
definire un metodo nello user control che faccia da "ponte":
Public Sub UserControl_RaiseOnData
    RaiseEvent OnData
End Sub
Public Sub MyCallback( ...)
    UserControl.RaiseOnData
End sub
il problema pero' e' dato dal fatto che puoi avere piu' istanze dello
UserControl attive ma hai un'unica istanza di modulo, quindi la funzione di
callback non sa su quale istanza invocare RaiseOnData... si potrebbe per
esempio, ogni volta che attivi la routine di callback, aggiungere l'istanza
corrente in una collection definita a livello di modulo, ma bisogna vedere
se da questa hai modo di ottenere un valore univoco da utilizzare come
chiave (per esempio come con la funzione SetTimer)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 impostato nello UserControl. Infatti se scrivo:
è un po' sporca ma funziona:
definisci in una classe un evento ed un metodo che lo scateni; istanzia un 
oggetto appartenente a tale classe pubblico nel modulo standard e fa sì che 
la tua callback, nel momento opportuno, invochi il metodo che genera 
l'evento.
Nello usercontrol definisci una variabile privata withevents che punti alla 
stessa istanza dell'oggetto pubblico e in risposta all'evento generato, 
scatena l'evento dello usercontrol.
Spetta, forse un po' di codice lo spiega meglio:
Classe coEvent:
---
Option Explicit
Public Event EventoDellaclasse()
Public Function Metodo() As Boolean
    RaiseEvent EventoDellaclasse
End Function
---
Nel modulo .bas:
---
Option Explicit
Public GeneratoreEvento As coEvent
Public Sub MiaCallback()
    GeneratoreEvento.Metodo
End Sub
---
Nello UC:
---
Option Explicit
Private WithEvents m_genevenopriv As coEvent
Public Event EventodellUC()
Private Sub m_genevenopriv_EventoDellaclasse()
    RaiseEvent EventodellUC
End Sub
Private Sub UserControl_Initialize()
    Set Module1.GeneratoreEvento = New coEvent
    Set m_genevenopriv = Module1.GeneratoreEvento
End Sub
---
Spero ti possa esser d'aiuto.
Ciao,
Moreno
Inviato da 
www.mynewsgate.net

Scusa Moreno forse ti ho riposto in privato.
Comunque grazie  a tutti, Moreno ha trovato la soluzione
Giuseppe