Delen via


Regio voor bijwerken van onderliggend venster

Een onderliggend venster is een venster met de stijl WS_CHILD of WS_CHILDWINDOW. Net als bij andere vensterstijlen ontvangen onderliggende vensters WM_PAINT berichten om het bijwerken te vragen. Elk onderliggend venster heeft een updateregio, die het systeem of de toepassing kan instellen om uiteindelijk WM_PAINT berichten te genereren.

De update en zichtbare regio's van een onderliggend venster worden beïnvloed door het bovenliggende venster van het kind; dit geldt niet voor vensters van andere stijlen. Het systeem stelt vaak de updateregio van het onderliggende venster in wanneer het de updateregio van het bovenliggende venster instelt, waardoor het onderliggende venster WM_PAINT berichten ontvangt wanneer het bovenliggende venster deze ontvangt. Het systeem beperkt de locatie van het zichtbare gebied van het onderliggende venster tot in het clientgebied van het bovenliggende venster en knipt een gedeelte van het onderliggende venster dat buiten het bovenliggende venster is verplaatst.

Het systeem stelt de updateregio voor een onderliggend venster in wanneer een deel van de updateregio van het bovenliggende venster een deel van het onderliggende venster bevat. In dergelijke gevallen verzendt het systeem eerst een WM_PAINT bericht naar het bovenliggende venster en stuurt het vervolgens een bericht naar het onderliggende venster, zodat het kind delen van het venster kan herstellen die het bovenliggende item heeft getekend.

Het systeem stelt de updateregio van het bovenliggende item niet in wanneer de onderliggende regio is ingesteld. Een toepassing kan geen WM_PAINT bericht genereren voor het bovenliggende venster door het onderliggende venster ongeldig te maken. Op dezelfde manier kan een toepassing geen WM_PAINT bericht voor het kind genereren door een gedeelte van het clientgebied van het bovenliggende item te ongeldig te maken dat volledig onder het onderliggende venster ligt. In dergelijke gevallen ontvangt geen van beide vensters een WM_PAINT bericht.

Een toepassing kan voorkomen dat de updateregio van een onderliggend venster wordt ingesteld wanneer het bovenliggende venster is ingesteld door de WS_CLIPCHILDREN stijl op te geven bij het maken van het bovenliggende venster. Wanneer deze stijl is ingesteld, sluit het systeem de onderliggende vensters uit van het zichtbare gebied van het bovenliggende item en negeert daarom een deel van de updateregio die de onderliggende vensters kan bevatten. Wanneer de toepassing in het bovenliggende venster schildert, wordt elke tekening die het onderliggende venster bedekt, geknipt, waardoor een volgende WM_PAINT bericht onnodig is voor het onderliggende venster.

De bijwerk- en zichtbare regio's van een onderliggend venster worden ook beïnvloed door de broers en zussen van het onderliggende venster. Vensters op hetzelfde niveau zijn vensters met een gemeenschappelijk bovenliggend venster. Als vensters op hetzelfde niveau elkaar overlappen, is het instellen van de updateregio voor de ene regio van het andere van invloed, waardoor WM_PAINT berichten naar beide vensters worden verzonden. Als een venster in de bovenliggende keten is samengesteld (een venster met WX_EX_COMPOSITED), ontvangen ze WM_PAINT berichten in de omgekeerde volgorde van hun positie in de Z-volgorde. Op basis hiervan ontvangt het venster hoogste in de Z-volgorde (bovenaan) het WM_PAINT bericht en vice versa. Als een venster in de bovenliggende keten niet is samengesteld, ontvangen zelfde vensters WM_PAINT berichten in Z-volgorde.

Vensters op hetzelfde niveau worden niet automatisch geknipt. Het ene zusje kan op een ander overlappend niveau tekenen, zelfs als het venster dat is getekend een lagere positie heeft in de Z-volgorde. Een toepassing kan dit voorkomen door de WS_CLIPSIBLINGS stijl op te geven bij het maken van de vensters. Wanneer deze stijl is ingesteld, sluit het systeem alle gedeelten van een overlappend venster op hetzelfde niveau uit van het zichtbare gebied van een venster als het overlappende venster op hetzelfde niveau een hogere positie heeft in de Z-volgorde.

Notitie

De bijwerk- en zichtbare regio's voor vensters met de stijl WS_POPUP of WS_POPUPWINDOW worden niet beïnvloed door de bovenliggende vensters.