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 >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→