Area di aggiornamento finestra figlio
Una finestra figlio è una finestra con lo stile WS_CHILD o WS_CHILDWINDOW. Analogamente ad altri stili di finestra, le finestre figlio ricevono WM_PAINT messaggi per richiedere l'aggiornamento. Ogni finestra figlio ha un'area di aggiornamento, che può essere impostata dal sistema o dall'applicazione per generare messaggi di WM_PAINT finale.
Le aree di aggiornamento e visibili di una finestra figlio sono interessate dalla finestra padre dell'elemento 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 dei messaggi WM_PAINT 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 ritaglia 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 una 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 tutte le parti della finestra su cui potrebbe essere stato disegnato l'elemento padre.
Il sistema non imposta l'area di aggiornamento dell'elemento padre quando l'elemento figlio è impostato. Un'applicazione non può generare un messaggio di WM_PAINT per la finestra padre invalidando la finestra figlio. Analogamente, un'applicazione non può generare un messaggio di WM_PAINT per l'elemento figlio invalidando una parte dell'area client dell'elemento 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 è 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 di WM_PAINT successivo alla finestra figlio non necessario.
Anche le aree di aggiornamento e visibili di una finestra figlio sono interessate dagli elementi di pari livello della finestra figlio. Le finestre di pari livello sono finestre con una finestra padre comune. Se le finestre di pari livello si sovrappongono, l'impostazione dell'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 è composta (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 messaggio WM_PAINT ultimo e viceversa. Se una finestra della catena padre non è composta, le finestre di pari livello ricevono WM_PAINT messaggi in ordine Z.
Le finestre di pari livello non vengono ritagliate automaticamente. Un elemento di pari livello può disegnare su un altro elemento di pari livello 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 è impostato, il sistema esclude tutte le parti di una finestra di pari livello sovrapposta dall'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.