Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi sviluppo Activex

Salve, sto imparando a programmare da poco controlli activex (ocx)
in vb e ho avuto qualche problemino che spero possiate aiutarmi
a risolvere. Il problema è che non riesco a richiamare da un modulo
(inserito nel progetto dell'activex) una funzione del controllo.
Inoltre nel modulo non posso usare raisevent per generare gli eventi.
Portando tutto sul controllo stesso invece ho notato che riferimenti
a form provocano errori e non permettono l'esecuzione del programma.
Così ho dovuto modificare alcune funzioni che andavano bene fuori
dal controllo... Dato che le funzioni di cui sto parlando sono un po'
delicate ho avuto un po' di difficoltà: subclassing e socket...
Alla fine qualcosa ho risolto ma rimane sempre il problema che non
posso richiamare dal modulo una funzione nel controllo e spostando
tutto sul controllo, per fare un esempio, non posso utilizzare
l'operatore addressof, indispensabile per la mia funzione.
Come fare allora ? Qualche soluzione ?
Nel mio caso, utilizzo una funzione che riceve i messaggi del socket:
FDACCEPT,FDREAD,FDCONNECT e simili. Penso sia necessario che siano
nel controllo per fare in modo che si possano creare degli eventi
adatti... Spero di essermi spiegato bene, se così non fosse chiedetemi
pure che vi spiego meglio. Se poi magari voi chattate su IRC ci
possiamo trovare e discuterne con più calma, basta che mi dite dove
e quando.
Ecco le funzioni riaguardanti:
Private Sub StartSubclass(F As Long)
PrevProc = SetWindowLong(F, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Private Sub StopSubclass(F As Long)
    If PrevProc <> 0 Then SetWindowLong F, GWL_WNDPROC, PrevProc
End Sub
Private Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal
wParam As Long, ByVal lParam As Long) As Long
    If uMsg = WINSOCK_MESSAGE Then
        ProcessMessage wParam, lParam
    Else
        WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
    End If
End Function
Private Function ProcessMessage(ByVal wParam As Long, ByVal lParam As Long)
'wParam = Socket Handle, lParam = connection message
    Select Case lParam
        Case FD_ACCEPT
        Case FD_CONNECT
        Case FD_WRITE
        Case FD_READ
        Case FD_CLOSE
    End Select
End Function
IN SINTESI: devo richiamare una funzione/sub/proprietà presente sul
UserControl da un modulo standard presente nel progetto activex. Nonostante
in fase di progettazione la funzione/sub/proprietà risulta richiamabile, in
realtà non lo è vb restituisce variabile oggetto o del blocco with non
impostata...
Grazie anticipatamente
Ciao

 impostata...
Secondo me tu commetti un'errore di logica, da quando in qua si chiamano le
funzioni/sub/proprietà di altri elementi da un modulo....???
Di solito la funzione del modulo è proprio quella di servire da contenitore
dal quale altri elementi possano attingere, ad esempio uno usercontrol...ma
non che il modulo attinga dallo usercontrol.
Forse però non ho capito il tuo problema, nel caso mi scuso, anche perchè
subclassing per me è come dire KinderBueno, quindi io ho inteso per quanto
potevo, nulla di più, nulla di meno!
:-)
Ciao

 ha scritto nel messaggio
news:3li%8.20952$s74.5...@twister1.libero.it...


 Ciao
Ora capisco.
Beh, mi pare che una soluzione te la sei già trovata, dal modulo richiami
una funzione dello usercontrol che faccia scattare l'evento, ho fatto delle
prove e ho notato anche io che dentro un modulo oggetto ci sono alcune
limitazioni rispetto ad un modulo standard o di classe, soprattutto
nell'area dichiarazioni.
Ciao

 ha scritto nel messaggio
news:CUj%8.21504$s74.5...@twister1.libero.it...
