Newsgroup: it.comp.lang.visual-basic
Titolo: Far comunicare 2 forms VB tramite messaggi

Salve!!!!!!
Come da oggetto, qualcuno ha un'idea?
Il mio problema non è tanto _mandare_ messaggi
quanto _gestire_ i messaggi ricevuti.
Come fare?
Solo una WindowProc risolve il problema?
Se si, come la sostituisco?
C'e' un modo + veloce e pratico di un SetWindowLong?
Ciao
Andrea


Public Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" _
   (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
 
Public Declare Function CallWindowProc Lib "user32" _
    Alias "CallWindowProcA" _
   (ByVal lpPrevWndFunc As Long, _
    ByVal hwnd As Long, _
    ByVal lMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Public Const GWL_WNDPROC As Long = (-4)
Public defWindowProc As Long
defWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
Public Function WindowProc(ByVal hwnd As Long, _
                           ByVal lMsg As Long, _
                           ByVal wParam As Long, _
                           ByVal lParam As Long) As Long
   On Error Resume Next
 
   Select Case lMsg
 
          Case WM_??????
               '*
               '* Tuo codice
               '*
               WindowProc = 0
 
          Case Else
 
               WindowProc = CallWindowProc(defWindowProc, _
                                               hwnd, _
                                               lMsg, _
                                               wParam, _
                                               lParam)
 
   End Select
 
 
End Function
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

Anche se forse sarebbe meglio creare dei metodi pubblici ( ad esempio ) per
far comunicare le Form prima di "scomodare" il subclassing.


 quanto _gestire_ i messaggi ricevuti.
Ehm... utilizzare degli eventi?

 Ehm... utilizzare degli eventi?
Uhm, si vede che sono andato a letto alle 4 di
mattina eh? :-)
In ogni caso resta una bella domanda, se
qualcuno ha una risposta, è pregato di
darla( la risposta... se poi è una bella ragazza se ne
puo' parlare... :-P )
Andrea


 A quale di quelle che hai fatto ti riferisci? Ad alcune abbiamo risposto!


 puo' parlare... :-P )
Sinceramente non capisco! Io per far comunicare i form e gli oggetti
utilizzo gli eventi... perchè tu non li utilizzi/puoi utilizzare?

tendenzialmente son d'accordo con te......con qualche precisazione.....
io di solito lascio che gli *_OnClick e compagnia bella rimangano Private
della form su cui si trovano......
se devo far comunicare due form (Form1 e Form2, per esempio), creo delle
belle Sub/Function pubbliche.
Se su Form1 ho una Public Sub Dimmi(), allora da Form2 posso semplicemente
mettere:
Form1.Dimmi
che può ovviamente anche essere una Function e restituirmi il risultato di
qualche elaborazione.
Qua, a dire il vero, non si capisce cosa intende The Deerbar per
"comunicare"......
almeno, io non l'ho capito!!!!
:-)))
good coding!!!
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
dam...@italiainfiera.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 utilizzo gli eventi... perchè tu non li utilizzi/puoi utilizzare?
Non è che non li posso utilizzare, è che mi ero dimenticato... :-P
Ci sono situazioni, comunque, in cui la comunicazione per messaggi
risulta piu' efficace di qualunque cosa.
Supponi, per esempio, di avere un form che vuoi pilotare dall'esterno,
oppure di voler comandare un'altra form senza richiamarne i metodi o
altre consimili amenità... i messaggi sono la soluzione + comoda!
In ogni caso sono curioso, se qualcuno sa come fare a gestire i
messaggi da VB, vi prego ditemelo!!!!! :-)
Andrea

 good coding!!!
Andrea

 messaggi da VB, vi prego ditemelo!!!!! :-)
Domanda insinuante: Ultimamente hai plonkato qualcuno?
un nick like "[A-Z][A-Z]####[A-Z]"?
--
Salutoni
Sergio

 messaggi da VB, vi prego ditemelo!!!!! :-)
  Se per "gestire i messaggi" intendi in subclassing ti ho postato il codice
7/8 post fa, ma il fatto che tu li abbia ingnorati mi fa ricordare che tu mi
abbia "plonkato", in questo caso cazzi tuoi!!!
So che non leggerai questo messaggio ma se qualcuno che ti conosce lo legge
spero che te lo riferisca
A mai più.


 un nick like "[A-Z][A-Z]####[A-Z]"?
????? O_o ?????????

[The DeerBear] scrisse:

C'è un signore, che posta da un po' di tempo su questo ng, ed il cui nick
darebbe risultato positivo all'operatore like con i criteri scritti, che ti ha
dato la risposta che cercavi. Probabilmente non la vedi perchè è entrato a far
parte del tuo kill file, con pieno merito, imho.
Il signore di cui sopra, che spero stia leggendo, ha innescato una querelle
pazzesca, dando degli incompetenti giocherelloni ad altri postatori, quando era
lui che non aveva capito una beata fava del contendere.
Lui poi il vb lo conosce, ma se vuole essere rivalutato dal punto di vista
umano, forse farebbe meglio a fare pubblica ammenda.
Questo, ovviamente, assolutamente imho. Lui poi farà quello che preferisce.
--
Salutoni
Sergio

sě, adesso che mi hai fatto pensare, č anche quello che cercava casa a
Pordenone, postando su questo NG......
alla faccia dell'OT!!!!!


 alla faccia dell'OT!!!!!
Quello ero io... mi spieghi cosa non va?
Andrea

 merito, imho.
Mi dici di chi parli?
Ciao
Andrea

 mi spieghi cosa non va?
non va che se plonki qualcuno rischi di perdere il filo dei thread, perchè i
messaggi ti si "combinano" a caso.... ;-)
--
Salutoni
Sergio

 Mi dici di chi parli?
nk6310i
--
Salutoni
Sergio

a me non va molto che se fosse stato un newbie a postare un msg per il
"cerco casa", sarebbe scoppiato un putiferio
mentre se lo fai tu, allora niente......
unito al discorso dei plonk a destra e a manca.......
good coding!!!


 good coding!!!
Ciao
Andrea

 C'e' un modo + veloce e pratico di un SetWindowLong?
Sul Sito Comune c'è un mio progetto di un controllo che intercetta i
messaggi ad una finestra senza che tu faccia SubClassing (lo fa lui per te).
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 cambia niente e buona notte, lo cambi in un punto solo!
se cambi i nomi ai metodi hai sbagliato il concetto di fondo ! ^_^  (imVVho)
io ho ad esempio una func NoNull che era (valorein,valore uot defoult) ora
ho dovuto modificare la func infatti ho scritto UNA NUOVA chiamata myFormat
che e' (valorein, valore out def, valore precedente ,valore successivo)
quindi ho cominciato a sostituire myFormat a NoNull fino a controllare con
mztool che non venisse + invocata fino a cancellarla !
Per le comunicazioni io Baso tutto sulle chiamte Nomeform.Metodo o
Nomeform.Sub_func ...

A volte in passato è bastato postare un OT di troppo per scatenare 3ed su
come
moderare il NG e cose del genere, su cui io sono sempre stato contrario.
Queste non sono mie supposizioni, basta fare ricerche con google su questo
NG per vedere
in passato quante volte è saltata fuori questa cosa.
Questo per dirti che se c'è un Manifesto che sconsiglia di postare "a
vanvera",
come OT e compagnia bella, allora dovrebbe essere così per tutti.
Invece se posti tu, che hai una buona reputazione e sei competente di VB, ci
si passa
sopra, mentre se arriva un newbie, allora si apre un putiferio.
Io non sono contro gli OT, sono contro chi tratta in maniera diversa questo
discorso.
Scusami se prima sono stato sgarbato con te, non era mia intenzione.
Volevo solo far notare questa cosa.
Per quanto riguarda i plonk, invece, non posso dirti niente perchè di
persona non so
nulla. Però se c'è qualcuno che ha sollevato il discorso, qualcosa c'è.....
Solo per chiarire, sinceramente, mi scuso per il mio comportamento!!!
Buon lavoro, e alla prossima!!!
Good coding!!!


 Nomeform.Sub_func ...
Continuo a pensare che non sia il modo migliore...
Andrea

 Continuo a pensare che non sia il modo migliore...
offrimi un'alternativa migliore allora ^_^;

 offrimi un'alternativa migliore allora ^_^;
Il PostMessage :-)
In realtà la mia "gestione" di queste cose è molto piu'
complicata, perche' io ho una gestione "orizzontale" di
solo andata, in genere.
Della serie, se dalla MainForm devo richiamare la FormA e poi
dalla FormA devo richiamare la MainForm, quando vado in
direzione MainForm-->FormA uso il metodo, mentre da
FormA-->MainForm uso o l'evento in FormA che viene recepito da
MainForm, oppure il messaggio sulla main.
Andrea

Pensa Gigio che qualche giorno fa, in Delphi,
mi sono fatto una classe singleton che
registrava numeri di messaggi di Windows in
fase di creazione e poi si poteva usare per spedire e
gestire messaggi.
Con poche modifiche, in teoria, si potrebbe
modificare per farle accettare un file di
configurazione, tale che si creerebbero le
circostanze per localizzare le stringhe, in
modo che eventuali applicazioni di altri
paesi possano dialogare con la tua nella
loro lingua originale.
Fiko eh?
Andrea

 Fiko eh?
Muahahha tipo DAMA su internet della M$ ? ^_^;;;
Scherzi a parte e' interessante !

 Decisamente hai capito male, io parlavo di un semplicissimo "PostMessage".
ti prego fammi un semplice esempio di codice ! Sto uscendo pazzo !

Sto uscendo pazzo !
PostMessage( CM_MYCUSTOMPROC,PARAM1,PARAM2 )
Ora, nella gestione di CM_MYCUSTOMPROC tu
puoi mettere qualunque cosa vuoi e gestirtelo
come ti pare. Anche se cambia l'implementazione,
il tuo codice non cambia se non in un 
punto o poco piu'.
E' chiaro che se poi vuoi fare una ristrutturazione
completa del codice cambiando tutto, non c'è tecnica
capace di sopravvivere :-)
Andrea
-------------------------------
Message Posted by  <dedGateway>
http://www.dedonline.com/forump