Condividi tramite


Area di aggiornamento finestra figlio

Una finestra figlio è una finestra con lo stile WS_CHILD o WS_CHILDWINDOW. Come altri stili di finestra, le finestre figlio ricevono WM_PAINT messaggi per richiedere l'aggiornamento. Ogni finestra figlio ha un'area di aggiornamento, che il sistema o l'applicazione può impostare per generare messaggi di WM_PAINT finale.

L'aggiornamento e le aree visibili di una finestra figlio sono interessate dalla finestra padre del figlio; questo non è vero per le finestre di altri stili. Il sistema imposta spesso l'area di aggiornamento della finestra figlio quando imposta l'area di aggiornamento della finestra padre, causando la ricezione di WM_PAINT messaggi della finestra figlio quando la finestra padre li riceve. Il sistema limita la posizione dell'area visibile della finestra figlio all'interno dell'area client della finestra padre e clip qualsiasi parte della finestra figlio spostata all'esterno della finestra padre.

Il sistema imposta l'area di aggiornamento per una finestra figlio ogni volta che parte dell'area di aggiornamento della finestra padre include una parte della finestra figlio. In questi casi, il sistema invia prima un messaggio WM_PAINT alla finestra padre e quindi invia un messaggio alla finestra figlio, consentendo al figlio di ripristinare qualsiasi parte della finestra su cui potrebbe essere stato eseguito il disegno dell'elemento padre.

Il sistema non imposta l'area di aggiornamento dell'elemento padre quando è impostato il figlio. Un'applicazione non può generare un messaggio WM_PAINT per la finestra padre invalidando la finestra figlio. Analogamente, un'applicazione non può generare un messaggio di WM_PAINT per il figlio invalidando una parte dell'area client padre che si trova interamente sotto la finestra figlio. In questi casi, nessuna finestra riceve un messaggio di WM_PAINT .

Un'applicazione può impedire l'impostazione dell'area di aggiornamento di una finestra figlio quando la finestra padre è impostata specificando lo stile di WS_CLIPCHILDREN durante la creazione della finestra padre. Quando questo stile viene impostato, il sistema esclude le finestre figlio dall'area visibile dell'elemento padre e quindi ignora qualsiasi parte dell'area di aggiornamento che può contenere le finestre figlio. Quando l'applicazione disegna nella finestra padre, qualsiasi disegno che coprirebbe la finestra figlio viene ritagliato, rendendo un messaggio WM_PAINT successivo alla finestra figlio non necessario.

Le aree di aggiornamento e visibili di una finestra figlio sono interessate anche dai fratelli della finestra figlio. Le finestre di pari livello sono tutte le finestre che hanno una finestra padre comune. Se le finestre di pari livello si sovrappongono, impostare l'area di aggiornamento per uno influisce sull'area di aggiornamento di un'altra, causando l'invio di messaggi WM_PAINT a entrambe le finestre. Se una finestra nella catena padre è composita (una finestra con WX_EX_COMPOSITED), le finestre di pari livello ricevono WM_PAINT messaggi nell'ordine inverso della posizione nell'ordine Z. Dato questo, la finestra più alta nell'ordine Z (in alto) riceve il relativo messaggio WM_PAINT ultimo e viceversa. Se una finestra della catena padre non è composta, le finestre di pari livello ricevono WM_PAINT messaggi nell'ordine Z.

Le finestre di pari livello non vengono ritagliate automaticamente. Un fratello può disegnare su un altro fratello sovrapposto anche se la finestra che sta disegnando ha una posizione inferiore nell'ordine Z. Un'applicazione può impedire questa operazione specificando lo stile WS_CLIPSIBLINGS durante la creazione delle finestre. Quando questo stile viene impostato, il sistema esclude tutte le parti di una finestra di pari livello sovrapposta da un'area visibile di una finestra se la finestra di pari livello sovrapposta ha una posizione superiore nell'ordine Z.

Nota

Le aree di aggiornamento e visibili per le finestre con lo stile WS_POPUP o WS_POPUPWINDOW non sono interessate dalle finestre padre.