Condividi tramite


Blocco aggiornamento finestra

Un blocco di aggiornamento della 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 usare il blocco per impedire il disegno se eseguono operazioni di spostamento o ridimensionamento simili con le proprie finestre.

Un'applicazione usa la funzione LockWindowUpdate per 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 finestre figlio. Quando il blocco è impostato, le funzioni GetDC e BeginPaint restituiscono un contesto di dispositivo visualizzato 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 impone che l'area visibile di una finestra sia 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 funzione GetDCEx , con il valore DCX_LOCKWINDOWUPDATE, per recuperare un contesto del dispositivo visualizzato per disegnare sulla finestra bloccata. Ciò consente all'applicazione di disegnare un rettangolo di rilevamento durante l'elaborazione di messaggi da tastiera o mouse. Il sistema usa questo metodo quando l'utente sposta e ridimensiona le finestre. GetDCEx recupera il contesto del dispositivo visualizzato dalla cache del contesto del dispositivo visualizzato, quindi l'applicazione deve rilasciare il contesto del dispositivo appena possibile dopo il disegno.

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