Condividi tramite


Blocco aggiornamento finestra

Un blocco di aggiornamento finestra è una sospensione temporanea del disegno in una finestra. Il sistema usa il blocco per impedire ad altre finestre di disegnare sul rettangolo di rilevamento ogni volta che l'utente sposta o ridimensiona una finestra. Le applicazioni possono utilizzare il blocco per impedire il disegno se eseguono operazioni di spostamento o ridimensionamento simili con le proprie finestre.

Un'applicazione usa la funzionelockWindowUpdateper impostare o cancellare un blocco di aggiornamento della finestra, specificando la finestra da bloccare. Il blocco si applica alla finestra specificata e a tutte le relative finestre figlio. Quando il blocco è impostato, le funzioniGetDCe BeginPaint restituiscono un contesto di dispositivo di visualizzazione con un'area visibile vuota. Dato questo, l'applicazione può continuare a disegnare nella finestra, ma tutto l'output viene ritagliato. Il blocco persiste finché l'applicazione non lo cancella chiamando LockWindowUpdate, specificando NULL per la finestra. Anche se LockWindowUpdate forza l'area visibile di una finestra come vuota, la funzione non rende invisibile la finestra specificata e non cancella il bit di stile WS_VISIBLE.

Dopo aver impostato il blocco, l'applicazione può usare la funzioneGetDCEx, con il valore DCX_LOCKWINDOWUPDATE, per recuperare un contesto di dispositivo di visualizzazione da disegnare sulla finestra bloccata. Ciò consente all'applicazione di disegnare un rettangolo di rilevamento durante l'elaborazione dei messaggi della tastiera o del mouse. Il sistema usa questo metodo quando l'utente sposta e ridimensiona le finestre. GetDCEx recupera il contesto del dispositivo di visualizzazione dalla cache del contesto di dispositivo di visualizzazione, quindi l'applicazione deve rilasciare il contesto di dispositivo il prima possibile dopo il disegno.

Mentre è impostato un blocco di aggiornamento della finestra, il sistema crea un rettangolo di delimitazione accumulato per ogni finestra bloccata. Quando il blocco viene cancellato, il sistema usa questo rettangolo di delimitazione per impostare l'area di aggiornamento per la finestra e le relative finestre figlio, forzando un eventuale WM_PAINT messaggio. Se il rettangolo di delimitazione accumulato è vuoto, ovvero se non è stato eseguito alcun disegno mentre è stato impostato il blocco, l'area di aggiornamento non è impostata.