Partilhar via


Região de atualização da janela filho

Uma janela filho é uma janela com o estilo WS_CHILD ou WS_CHILDWINDOW. Assim como outros estilos de janela, as janelas filho recebem WM_PAINT mensagens para solicitar a atualização. Cada janela filho tem uma região de atualização, que o sistema ou o aplicativo pode definir para gerar mensagens de WM_PAINT eventual.

A atualização de uma janela filho e as regiões visíveis são afetadas pela janela pai da criança; isso não é verdadeiro para janelas de outros estilos. O sistema geralmente define a região de atualização da janela filho quando define a região de atualização da janela pai, fazendo com que a janela filho receba WM_PAINT mensagens quando a janela pai as recebe. O sistema limita o local da região visível da janela filho para dentro da área do cliente da janela pai e corta qualquer parte da janela filho movida para fora da janela pai.

O sistema define a região de atualização para uma janela filho sempre que parte da região de atualização da janela pai inclui uma parte da janela filho. Nesses casos, o sistema primeiro envia uma mensagem de WM_PAINT para a janela pai e, em seguida, envia uma mensagem para a janela filho, permitindo que o filho restaure todas as partes da janela que o pai pode ter desenhado.

O sistema não define a região de atualização do pai quando a do filho é definida. Um aplicativo não pode gerar uma mensagem de WM_PAINT para a janela pai invalidando a janela filho. Da mesma forma, um aplicativo não pode gerar uma mensagem de WM_PAINT para o filho invalidando uma parte da área do cliente pai que está inteiramente sob a janela filho. Nesses casos, nenhuma janela recebe uma mensagem WM_PAINT .

Um aplicativo pode impedir que a região de atualização de uma janela filho seja definida quando a janela pai é definida especificando o estilo de WS_CLIPCHILDREN ao criar a janela pai. Quando esse estilo é definido, o sistema exclui as janelas filho da região visível do pai e, portanto, ignora qualquer parte da região de atualização que possa conter as janelas filho. Quando o aplicativo pinta na janela pai, qualquer desenho que cobriria a janela filho é recortado, tornando desnecessária uma mensagem de WM_PAINT subsequente para a janela filho.

A atualização e as regiões visíveis de uma janela filho também são afetadas pelos irmãos da janela filho. Janelas irmãos são qualquer janela que tenha uma janela pai comum. Se as janelas irmãos se sobrepõem, definir a região de atualização para uma afetará a região de atualização de outra, fazendo com que WM_PAINT mensagens sejam enviadas para ambas as janelas. Se uma janela na cadeia pai for composta (uma janela com WX_EX_COMPOSITED), as janelas irmãos receberão WM_PAINT mensagens na ordem inversa de sua posição na ordem Z. Considerando isso, a janela mais alta na ordem Z (na parte superior) recebe sua mensagem WM_PAINT por último e vice-versa. Se uma janela na cadeia pai não for composta, as janelas irmãos receberão WM_PAINT mensagens na ordem Z.

As janelas irmãos não são recortadas automaticamente. Um irmão pode desenhar sobre outro irmão sobreposto, mesmo que a janela que está desenhando tenha uma posição inferior na ordem Z. Um aplicativo pode impedir isso especificando o estilo WS_CLIPSIBLINGS ao criar as janelas. Quando esse estilo é definido, o sistema exclui todas as partes de uma janela irmã sobreposta da região visível de uma janela se a janela irmão sobreposta tiver uma posição mais alta na ordem Z.

Observação

As regiões de atualização e visíveis para janelas que têm o estilo WS_POPUP ou WS_POPUPWINDOW não são afetadas por suas janelas pai.