Partilhar via


Região de atualização da janela filho

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

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 é verdade 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 a localização 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 WM_PAINT para a janela pai e, em seguida, envia uma mensagem para a janela filho, permitindo que o filho restaure quaisquer partes da janela que o pai possa ter desenhado.

O sistema não define a região de atualização do pai quando a da criança é definida. Um aplicativo não pode gerar uma mensagem WM_PAINT para a janela pai invalidando a janela filho. Da mesma forma, um aplicativo não pode gerar uma mensagem WM_PAINT para o filho invalidando uma parte da área do cliente do pai que fica inteiramente sob a janela filho. Nesses casos, nenhuma das janelas 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 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 filhas. Quando o aplicativo pinta na janela pai, qualquer desenho que cubra a janela filho é cortado, tornando desnecessária uma mensagem 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. As janelas irmãs são quaisquer janelas que tenham uma janela pai comum. Se as janelas irmãs se sobrepõem, a definição da região de atualização para uma afeta 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ãs receberão WM_PAINT mensagens na ordem inversa de sua posição na ordem Z. Diante disso, 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ãs receberão WM_PAINT mensagens na ordem Z.

As janelas dos irmãos não são cortadas automaticamente. Um irmão pode desenhar sobre outro irmão sobreposto, mesmo que a janela que está desenhando tenha uma posição mais baixa na ordem Z. Um aplicativo pode evitar 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ã 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 pelas janelas pai.