Region aktualizacji okna podrzędnego
Okno podrzędne to okno ze stylem WS_CHILD lub WS_CHILDWINDOW. Podobnie jak w przypadku innych stylów okien podrzędnych, okna podrzędne odbierają komunikaty WM_PAINT w celu wyświetlenia monitu o aktualizację. Każde okno podrzędne ma region aktualizacji, który system lub aplikacja może ustawić na generowanie komunikatów WM_PAINT ostatecznej.
Na aktualizację i widoczne regiony okna podrzędnego wpływa okno nadrzędne elementu podrzędnego; nie dotyczy to okien innych stylów. System często ustawia region aktualizacji okna podrzędnego podczas ustawiania regionu aktualizacji okna nadrzędnego, co powoduje, że okno podrzędne odbiera WM_PAINT komunikatów, gdy okno nadrzędne je odbiera. System ogranicza lokalizację widocznego regionu okna podrzędnego do obszaru klienta okna nadrzędnego i przycina dowolną część okna podrzędnego przeniesionego poza okno nadrzędne.
System ustawia region aktualizacji dla okna podrzędnego za każdym razem, gdy część regionu aktualizacji okna nadrzędnego zawiera część okna podrzędnego. W takich przypadkach system najpierw wysyła komunikat WM_PAINT do okna nadrzędnego, a następnie wysyła komunikat do okna podrzędnego, dzięki czemu dziecko może przywrócić wszystkie części okna, które mógł narysować element nadrzędny.
System nie ustawia regionu aktualizacji elementu nadrzędnego po ustawieniu elementu podrzędnego. Aplikacja nie może wygenerować komunikatu WM_PAINT dla okna nadrzędnego, unieważniając okno podrzędne. Podobnie aplikacja nie może wygenerować komunikatu WM_PAINT dla elementu podrzędnego, unieważniając część obszaru klienta elementu nadrzędnego, która znajduje się całkowicie pod oknem podrzędnym. W takich przypadkach żadna z okien nie odbiera komunikatu WM_PAINT.
Aplikacja może uniemożliwić ustawienie regionu aktualizacji okna podrzędnego po ustawieniu okna nadrzędnego przez określenie stylu WS_CLIPCHILDREN podczas tworzenia okna nadrzędnego. Po ustawieniu tego stylu system wyklucza okna podrzędne z widocznego regionu nadrzędnego i dlatego ignoruje dowolną część regionu aktualizacji, która może zawierać okna podrzędne. Gdy aplikacja maluje się w oknie nadrzędnym, każdy rysunek, który obejmowałby okno podrzędne, zostanie obcięty, co spowoduje, że kolejny komunikat WM_PAINT do okna podrzędnego niepotrzebny.
Na aktualizacje i widoczne regiony okna podrzędnego mają wpływ również elementy równorzędne okna podrzędnego. Okna równorzędne to wszystkie okna, które mają wspólne okno nadrzędne. Jeśli okna równorzędne nakładają się na siebie, ustawienie regionu aktualizacji dla jednego wpływa na region aktualizacji innego, powodując wysyłanie komunikatów WM_PAINT do obu okien. Jeśli okno w łańcuchu nadrzędnym jest złożone (okno z WX_EX_COMPOSITED), okna równorzędne odbierają komunikaty WM_PAINT w odwrotnej kolejności ich pozycji w kolejności Z. Biorąc pod uwagę to, okno najwyższe w kolejności Z (u góry) otrzymuje komunikat WM_PAINT ostatni i odwrotnie. Jeśli okno w łańcuchu nadrzędnym nie jest złożone, okna równorzędne odbierają komunikaty WM_PAINT w kolejności Z.
Okna równorzędne nie są automatycznie przycinane. Jedno rodzeństwo może narysować inne nakładające się element równorzędny, nawet jeśli rysunek okna ma niższą pozycję w kolejności Z. Aplikacja może temu zapobiec, określając styl WS_CLIPSIBLINGS podczas tworzenia okien. Po ustawieniu tego stylu system wyklucza wszystkie części nakładających się okien równorzędnych z widocznego regionu okna, jeśli nakładające się okno równorzędne ma wyższą pozycję w kolejności Z.
Nuta
Aktualizacje i widoczne regiony dla okien, które mają styl WS_POPUP lub WS_POPUPWINDOW, nie mają wpływu na ich okna nadrzędne.