Dopo aver visto come si registra una classe di finestre e le caratteristiche basilari delle strutture dell’SDK ( Software Development Kit ) di Windows, vediamo un altro aspetto molto importante e assai complicato per i principianti, il ciclo dei messaggi ed il suo funzionamento.
In Windows ogni azione dal mouse o tastiera non viene inviata direttamente all’applicazione, ma inserita nella coda dei messaggi, che possono essere intercettati con la funzione GetMessage. In pratica questa funzione ritorna il primo messaggio disponibile nella coda della propria applicazione:
BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT uMsgInit, UINT uMsgEnd)
se viene trovato un messaggio diverso da WM_QUIT ( uscita dell’applicazione ) ritorna un valore diverso da zero, al contrario torna zero. LP davanti al tipo della variabile indica che si tratta di un puntatore al valore, lpMsg quindi è un puntatore ad una struttura MSG
typedef struct { HWND hWnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, *PMSG;
Il parametro hWnd della funzione GetMessage è l’handle della finestra che riceve i messaggi nel thread corrente, se è nullo vuol dire che vogliamo ricevere tutti i messaggi di tutte le finestre di un thread; uMsgInit e uMsgEnd sono il range dei messaggi da ricevere, il filtro in sostanza, se entrambi sono zero riceviamo tutti i messaggi. Quindi se dovessi prendere tutti i messaggi di tutte le finestre del thread ed uscire quando viene inviato il messaggio di chiusura applicazione ( WM_QUIT ) dovrò scrivere:
MSG msg; while (GetMessage(&msg, 0, 0, 0)) { .. fai qualcosa ... }
Dalla prossima lezione vedremo come costruire la nostra prima e semplice finestra con l’SDK di Windows.
<< Lezione Precedente – Inizio Corso – Lezione Successiva >>
MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…
Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…
MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…
MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…
La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…