Forum di AAC   |      Messaggi privati   |      English



ArcadiA Club
ArcadiA Club


Fai una domanda     Collabora con AAC     Inserisci un commento     Richiedi un articolo     Vota un sondaggio   



Home Page   Home Page
programmazione.htm   Programmazione - FORUM sezione  Vai al FORUM
 
Username:
Password:
Iscriviti!  |  Recupero password



Iscriviti GRATIS, potrai navigare senza questa
fascia e accedere a contenuti esclusivi:

    E-Mail:

Password:



 
 

 
- Il subclassing -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Conoscere un minimo del funzionamento dei Windows Form - un compilatore per vb.net
Il subclassing per avere pieno controllo degli eventi di un form

LA FUNZIONE WNDPROC
Funzione che riceve tutte le informazioni sugli eventi di un controllo

Windows, per comunicare tutto ciò che sta accadendo nel sistema ad una finestra (non per forza visibile), richiama una funzione relativa a quella finestra che ne gestisce tutti gli eventi: essa è chiamata WndProc. Questa funzione può ricevere anche migliaia di messaggi in pochi secondi. Il suo compito è però principalmente quello di smistare le informazioni ad altre funzioni, infatti è proprio essa che genera tutti gli eventi con i quali siamo soliti interagire senza alcun problema. Se questa cosa vi stupisce è perchè tutto quello che fa WndProc, avviene in maniera invisibile al programmatore quando si utilizzano i Windows Form. Vediamo un esempio di una WndProc associata ad un form che richiama l'evento da noi gestito di click:


'Questo codice è solo teorico
Sub WndProc(ByRef m As System.Windows.Forms.Message)
	Select Case m.Msg
		Case WM_MOUSEMOVE
			Form1_MouseMove(...)
	End Select
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Win
dows.Forms.MouseEventArgs) Handles Me.MouseMove
	MsgBox("Hello World")
End Sub

WNDPROC E I WINDOWS FORM
Il framework .Net permette di intercettare tutto ciò che passa per WndProc

Ammettiamo ora di voler filtrare tutti i messaggi che passano per questa funzione al fine di vedere qualche evento che non è normalmente gestito dagli eventi del Windows Form (come invece è il click con l'evento Form.Click) o un messaggio personalizzato. Vediamo come fare:


Public Class WndProcExample
	Const WM_MYMESSAGE = &H200 'Sostituire con il numero del messaggio
	Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
		Select Case m.Msg
			Case WM_MYMESSAGE
				MsgBox("E' arrivato il messaggio che aspettavi!")
		End Select
		MyBase.WndProc(m)
	End Sub
End Class

Vediamo cosa abbiamo fatto in queste righe: per prima cosa è importante chiarire il significato della linea Overrides Sub WndProc, attraverso di essa è possibile sovrascrivere tutto ciò che fa la funzione standard della Windows Form fa; questa funzione prende come parametro una struttura contenente informazioni riguardanti il messaggio (il numero identificativo, la finestra che l'ha mandato ecc.). La costante WM_MYMESSAGE deve contenere il numero del messaggio che siamo interessati ad intercettare (&H200 indica WM_MOUSEMOVE, corrisponde al movimento del mouse) poiché essa verrà confrontata attraverso il Select Case con m.Msg (appunto il numero del messaggio ricevuto). Ultima cosa importante è l'istruzione MyBase.WndProc(m): essa trasferisce il controllo dell'evento alla funzione predefinita della finestra; se quest'ultima non viene richiamata il gestore degli eventi del form non verrà mai a sapere cosa deve fare e questo renderà l'applicazione totalmente dipendente dal vostro controllo, anche per disegnare, ridimensionare e spostare. È sconsigliabile farsi carico di queste operazioni, quindi è sempre bene richiamare la WndProc predefinita dopo aver eseguito la propria.
 

<< INDIETRO by VeNoM00  


Dì la tua: cosa ne pensi?
Esponi il tuo punto di vista e condividilo con migliaia di persone

Oggetto nuova discussione:


Testo del messaggio:

E-Mail:





Una discussione di questa sezione

problemino kon facebook....

scs a tutti ma volevo kiedervi un aiuto collettivo da parte vostra.......ero su facebook 10 minuti fa e tutto d'un tratto mi è venuta fuori una pagina con scritto Per continuare a usare Facebook, devi confermare il tuo indirizzo e-mail. Digita il codice che hai ricevuto nell'e-mail di conferma: E-mail:..................... Codice:............................ Non vedi l'e-mail di...

LEGGI TUTTA LA DISCUSSIONE


Risposta 1

Ti sei appena iscritta? Se è così il codice ce l'hai di sicuro. Controlla la posta nella mail che hai usato per iscriverti. Ci sarà un messaggio di FB in cui ti invia il codice. Basta cliccare sul link nella mail, come ti spiega la stessa, e il gioco è fatto!

LEGGI TUTTE LE RISPOSTE


Risposta 2

Conosco almeno una paio di persone che hanno dovuto rifare il proprio account di facebook, senza oltretutto la possibilità di cancellare il primo, visto che non gli era più concesso entrarci. Spero non sia il tuo caso...la mail che ti era stata recapitata quando ti sei iscritta non ce l'hai più a sto punto immagino...

LEGGI TUTTE LE RISPOSTE

 

Aggiungi ai tuoi preferiti 
Aggiungi a del.icio.us  Aggiungi a Technorati  Aggiungi a Furl  Aggiungi a OKNO  Segnala su Wikio  Segnala su upnews  Segnala su Diggita  Segnala su ZicZac  Segnala su Kipapa  Segnala su Digg  Segnala su Pligg  Segnala su Segnalo  Segnala su Live  Segnala su Google  Segnala su Facebook  Segnala su StumbleUpon  Segnala su Ask  Segnala su reddit  Segnala su Technotizie 

 




^ TOP  
Linkaci | Segnala errore | Invita | Stampa


pubblicità | regole | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2010 - Grafica, layout e contenuti sono di esclusiva proprietà di ArcadiA Club.

Powered by:
Spazi pubblicitari di alto livello
 

Compra in un click! | Cerca prodotti in offerta: