Newsgroup: it.comp.programmare.win32
Titolo: Gli eventi

Una cosa che manca al VC è che invece il VB supporta benissimo sono gli
eventi. In VC posso fare miracoli con le classi, ma gli "eventi" non sono
contemplati, nemmeno nelle specifiche ANSI del C++ (credo). Eppure so che
esistono una specie di "code messaggi" che windows genera per portare
messaggi da un'applicazione ad un'altra o al/dal sistema operativo.
Ora, come si intercettano questi messaggi? Qualcuno mi fa una piccola
spiegazione su questo argomento?
Ciao by Stefano from Italy
On the net: 
s.pe...@usa.net

Se utilizzi le MFC, esiste una cosa molto simile agli eventi di Visual Basic.
Infatti ad ogni applicazione windows e' associata una coda dei messaggi, che
vengono generati in base alle azioni dell'utente e dal programma, ad esmpio
quando premo il pulsante sinistro del mouse, se premo un tasto della
tastiera, se scelgo un opzione da una list box e cosi' via. Ad ogni messaggio
e' associato un numero e dei dati ad esempio i messaggi del mouse sono
associate le coordinate e lo stato dei tasti ctrl, alt e shift. MFC e' una
libreria che tra le altre cosa intercetta questi messaggi e chiama delle
funzioni (chiamate message handler o gestori di messaggi) all'interno del tuo
programma. Addirittura esiste un componente del VC chiamato class wizard che
ti permette di generare il codice per i message handler. Quindi come vedi i
concetti sono abbastanza simili agli eventi di VB.


Se ti interessa sapere come siano trattati gli "eventi" (più propriamente
"messaggi") da Windows e come vanno gestiti da un programma C (non C++, dove
il framework maschera leggermente la cosa gestendo una serie di funzioni
OnEvent) puoi dare un'occhiata al mio tutorial su Win32 alla pagina
http://www.freeweb.org/letteratura/loz/corsowin32.html
 e più precisamente
nel capitolo 2. La cosa è ancora incompleta (dovrei dire in alto mare) ma la
parte che ti interessa è già trattata (e a giorni arriva a grande richiesta
l'update).
Ciao,
Lorenzo
---
"...un tipo perso dietro le nuvole e la poesia..."
Lorenzo "Loz" Novara
E-Mail: 
l...@iol.it
ICQ: 30416703
Web: 
http://loz.freeweb.org
 - 
http://www.poli.studenti.to.it/~l.novara

>Se utilizzi le MFC, esiste una cosa molto simile agli eventi di Visual Basic.
E in semplice Win32, per intercettare gli eventi diretti verso la mia
applicazione (magari Win32 consolle)? Credo che devo specificare una routine
chiamata "di callback" durante l'inizializzazione di quel qualcosa che poi mi
manda i messaggi... ma non ho ben capito. E se volessi SPEDIRE un messaggio?
Ciao by Stefano from Italy
Online as 
s.pe...@usa.net

manda i messaggi... ma non ho ben capito. E se volessi SPEDIRE un
messaggio?
In semplice Win32 bisogna usare un approccio particolare basato su un loop
while che legge dalla coda dei messaggi del programma ciascun messaggio e lo
manda al gestore di eventi, un'altra funzione del programma. Il punto è che
un programma per disporre di una coda di messaggi deve disporre anche di una
finestra, perciò con un programma in modalità console puoi scordartelo...
Per mandare un messaggio usi semplicemente SendMessage(hWnd, uMsg, wParam,
lParam), dove ovviamente hWnd è l'handle della finestra (e quindi anche di
un controllo) e uMsg è il messaggio interessato.
Comunque mi sembra che tu sia a zero quanto a programmazione Win32 e questa
non può essere spiegata in poche righe ma presuppone uno studio approfondito
sui meccanismi specifici di questo tipo di architettura.
