Megosztás a következőn keresztül:


Ablakfrissítés zárolása

A ablakfrissítési zárolási a rajz ideiglenes felfüggesztése az ablakban. A rendszer a zárolással megakadályozza, hogy más ablakok átrajzolása a követési téglalapon keresztül történjen, amikor a felhasználó áthelyez vagy méretez egy ablakot. Az alkalmazások a zárolással megakadályozhatják a rajzot, ha hasonló áthelyezési vagy méretezési műveleteket hajtanak végre saját ablakukkal.

Egy alkalmazás a LockWindowUpdate függvénnyel állít be vagy töröl egy ablakfrissítési zárolást, megadva a zárolni kívánt ablakot. A zárolás a megadott ablakra és annak összes gyermekablakára vonatkozik. Ha a zárolás be van állítva, a GetDC és BeginPaint függvény üres, látható régióval rendelkező megjelenítési eszközkörnyezetet ad vissza. Ennek alapján az alkalmazás továbbra is rajzolhat az ablakban, de az összes kimenet ki van vágva. A zárolás mindaddig megmarad, amíg az alkalmazás nem törli azt LockWindowUpdatemeghívásával, megadva NULL az ablakhoz. Bár LockWindowUpdate az ablak látható régióját üresre kényszeríti, a függvény nem teszi láthatatlanná a megadott ablakot, és nem törli a WS_VISIBLE stílusbitet.

A zárolás beállítása után az alkalmazás a GetDCEx függvénnyel DCX_LOCKWINDOWUPDATE értékkel lekérheti a megjelenítési eszköz környezetét a zárolt ablak fölé húzva. Ez lehetővé teszi, hogy az alkalmazás rajzoljon egy követési téglalapot a billentyűzet- vagy egérüzenetek feldolgozásakor. A rendszer ezt a módszert használja, amikor a felhasználó áthelyezi és méretezi az ablakokat. GetDCEx lekéri a megjelenítési eszköz környezetét a megjelenítési eszköz környezeti gyorsítótárából, így az alkalmazásnak a rajz után a lehető leghamarabb fel kell szabadítania az eszközkörnyezetet.

Amíg az ablakfrissítési zárolás be van állítva, a rendszer minden zárolt ablakhoz létrehoz egy halmozott határoló téglalapot. A zárolás törlésekor a rendszer ezzel a határolókerettel állítja be az ablak és a gyermekablak frissítési régióját, ami egy végleges WM_PAINT üzenetet kényszerít ki. Ha a halmozott határoló téglalap üres (vagyis ha a zárolás beállításakor nem történt rajz), a frissítési régió nincs beállítva.