Sdílet prostřednictvím


Zámek aktualizace okna

Zámek aktualizace okna je dočasné pozastavení kreslení v okně. Systém používá zámek, aby ostatní okna nemohla kreslit přes obdélník sledování pokaždé, když uživatel přesune nebo otáčí okno. Aplikace můžou zámek použít k zabránění kreslení, pokud provádějí podobné operace přesunutí nebo velikosti s vlastními okny.

Aplikace používá funkci LockWindowUpdate k nastavení nebo vymazání zámku aktualizace okna, které určuje okno, které se má zamknout. Zámek platí pro zadané okno a všechna jeho podřízená okna. Po nastavení zámku vrátí funkce GetDC a BeginPaint kontext zařízení pro zobrazení s prázdnou oblastí. Vzhledem k tomu může aplikace pokračovat ve kreslení v okně, ale veškerý výstup je oříznutý. Zámek přetrvává, dokud aplikace nesmaže voláním LockWindowUpdate, zadáním NULL pro okno. I když LockWindowUpdate vynutí, aby viditelná oblast okna byla prázdná, funkce nečiní zadané okno neviditelné a nevymaže bit stylu WS_VISIBLE.

Po nastavení zámku může aplikace použít funkci GetDCEx s hodnotou DCX_LOCKWINDOWUPDATE k načtení kontextu zařízení pro zobrazení, který se má nakreslit přes uzamčené okno. Aplikace tak může při zpracování zpráv klávesnice nebo myši nakreslit obdélník sledování. Systém tuto metodu používá, když uživatel přesune a velikost oken. GetDCEx načte kontext zobrazení zařízení z mezipaměti kontextu zobrazení zařízení, takže aplikace musí po kreslení co nejdříve uvolnit kontext zařízení.

Zatímco je nastaven zámek aktualizace okna, systém vytvoří kumulovaný ohraničující obdélník pro každé uzamčené okno. Když se zámek vymaže, systém pomocí tohoto ohraničujícího obdélníku nastaví oblast aktualizace pro okno a jeho podřízená okna a vynutí případnou WM_PAINT zprávu. Pokud je kumulovaný ohraničující obdélník prázdný (to znamená, že pokud během nastavení zámku nedošlo k žádnému výkresu), oblast aktualizace není nastavená.