Fondamentalmente è quello che fa il Windows UI framework named User32 per voi. Vedi anche MSDN: Windows and Messages.
Questo framework funziona consentendo all'applicazione di implementare un "message pump" che riceve messaggi da Windows. Un messaggio può essere "il mouse si è spostato su questa finestra" o "è stato premuto il pulsante del mouse". Si noti che una "finestra" è più di una semplice "finestra" nel senso di un modulo, assicurarsi di leggere il collegamento MSDN. Un pulsante è anche una finestra.
Quindi:
- Un mouse è collegato al PC tramite un bus hardware
- utente sposta il mouse
- segnali hardware vengono tradotti in segnali software
- Windows converte questi segnali ai messaggi
- Windows invia questi messaggi alla pompa messaggi dell'applicazione appropriata
- L'applicazione fa es con questi messaggi quello che vuole
Ora WinForms di .NET avvolge questa pompa messaggio per te, ed espone i messaggi come eventi è possibile abbonarsi. Lo si può vedere in azione per overriding WndProc()
on your control of coice:
protected override void WndProc(ref Message m)
{
Console.WriteLine(m);
base.WndProc(ref m);
}
Più in profondità (da MSDN: About Messages and Message Queues), un messaggio di Windows è associato ad una finestra (o "controllo" in termini WinForms) utilizzando una maniglia. Questo handle identifica univocamente un controllo.
In questo modo WinForms sa che un mouse message con handle X è destinato al controllo Y con quell'handle, quindi solleva il MouseClick o l'evento correlato alla ricezione di quel messaggio.
Grazie per la risposta. Tutti questi sistemi di messaggi in Windows sono scritti in linguaggio C o in un'altra lingua? – Lyrk
I messaggi di Windows sono un concetto indipendente dalla lingua e in memoria. Si chiama la libreria User32 per ricevere messaggi nel linguaggio di programmazione scelto. – CodeCaster