Sdílet prostřednictvím


Oblast aktualizace podřízeného okna

Podřízené okno je okno se stylem WS_CHILD nebo WS_CHILDWINDOW. Podobně jako jiné styly oken dostanou podřízená okna WM_PAINT zprávy, které budou vyzvány k aktualizaci. Každé podřízené okno má oblast aktualizace, kterou může systém nebo aplikace nastavit tak, aby vygenerovaly konečné WM_PAINT zprávy.

Aktualizace a viditelné oblasti podřízeného okna jsou ovlivněny nadřazeným oknem dítěte; to neplatí pro okna jiných stylů. Systém často nastavuje oblast aktualizace podřízeného okna, když nastaví oblast aktualizace nadřazeného okna, což způsobí, že podřízené okno bude přijímat WM_PAINT zprávy, když je nadřazené okno obdrží. Systém omezuje umístění viditelné oblasti podřízeného okna do klientské oblasti nadřazeného okna a vystřihuje libovolnou část podřízeného okna přesunutou mimo nadřazené okno.

Systém nastaví oblast aktualizace podřízeného okna vždy, když část oblasti aktualizace nadřazeného okna obsahuje část podřízeného okna. V takových případech systém nejprve odešle zprávu WM_PAINT do nadřazeného okna a potom odešle zprávu do podřízeného okna, což podřízené sadě umožní obnovit všechny části okna, které nadřazený objekt mohl nakreslit.

Systém při nastavení podřízené oblasti nenastaví oblast aktualizace nadřazeného objektu. Aplikace nemůže vygenerovat WM_PAINT zprávu pro nadřazené okno zrušením platnosti podřízeného okna. Podobně aplikace nemůže vygenerovat WM_PAINT zprávu pro podřízenou položku tím, že zneplatní část klientské oblasti nadřazeného objektu, která leží zcela pod podřízeným oknem. V takových případech žádné okno neobdrží WM_PAINT zprávu.

Aplikace může zabránit nastavení oblasti aktualizace podřízeného okna, když je nadřazené okno nastaveno zadáním WS_CLIPCHILDREN stylu při vytváření nadřazeného okna. Pokud je tento styl nastaven, systém vyloučí podřízená okna z viditelné oblasti nadřazeného objektu, a proto ignoruje všechny části oblasti aktualizace, které můžou obsahovat podřízená okna. Když aplikace maluje v nadřazené okně, všechny výkresy, které by pokryly podřízené okno, se oříznou a následné WM_PAINT zprávu do podřízeného okna nepotřebné.

Aktualizace a viditelné oblasti podřízeného okna jsou ovlivněny také podřízeným oknem na stejné úrovni. Okna na stejné sadě jsou všechna okna, která mají společné nadřazené okno. Pokud se okna na stejné straně překrývají, nastavení oblasti aktualizace pro jednu ovlivňuje oblast aktualizace jiné, což způsobí, WM_PAINT zprávy se odešlou do obou oken. Pokud je okno v nadřazeném řetězci složené (okno s WX_EX_COMPOSITED), okna na stejné straně obdrží WM_PAINT zprávy v opačném pořadí jejich pozice v pořadí Z. V tomto případě okno nejvyšší v pořadí Z (nahoře) obdrží zprávu WM_PAINT poslední a naopak. Pokud okno v nadřazené řetězu není složené, okna na stejné stejné straně obdrží WM_PAINT zprávy v pořadí Z.

Okna na stejné stejné platformě nejsou automaticky oříznuta. Jedno na stejné straně může kreslit přes jiné překrývající se stejné pořadí, i když okno, které je výkresem, má nižší pozici v pořadí Z. Aplikace to může zabránit zadáním stylu WS_CLIPSIBLINGS při vytváření oken. Pokud je tento styl nastavený, systém vyloučí všechny části překrývajícího se okna na stejné stejné straně z viditelné oblasti okna, pokud má překrývající se okno na stejné stejné pozici v pořadí Z.

Poznámka

Aktualizace a viditelné oblasti pro okna, která mají styl WS_POPUP nebo WS_POPUPWINDOW, nejsou ovlivněny nadřazenými okny.