Bagikan melalui


Kunci Pembaruan Jendela

Kunci pembaruan jendela adalah penangguhan sementara gambar di jendela. Sistem menggunakan kunci untuk mencegah jendela lain menggambar persegi panjang pelacakan setiap kali pengguna bergerak atau mengukur jendela. Aplikasi dapat menggunakan kunci untuk mencegah gambar jika mereka melakukan operasi pemindahan atau ukuran serupa dengan jendela mereka sendiri.

Aplikasi menggunakan fungsiLockWindowUpdate untuk mengatur atau menghapus kunci pembaruan jendela, menentukan jendela yang akan dikunci. Kunci berlaku untuk jendela yang ditentukan dan semua jendela anaknya. Saat kunci diatur, fungsiGetDC dan BeginPaint mengembalikan konteks perangkat tampilan dengan wilayah terlihat yang kosong. Mengingat ini, aplikasi dapat terus menggambar di jendela, tetapi semua output diklip. Kunci berlanjut hingga aplikasi menghapusnya dengan memanggil LockWindowUpdate, menentukan null untuk jendela. Meskipun LockWindowUpdate memaksa wilayah jendela yang terlihat kosong, fungsi tidak membuat jendela yang ditentukan tidak terlihat dan tidak menghapus bit gaya WS_VISIBLE.

Setelah kunci diatur, aplikasi dapat menggunakan fungsiGetDCEx, dengan nilai DCX_LOCKWINDOWUPDATE, untuk mengambil konteks perangkat tampilan untuk menggambar jendela terkunci. Ini memungkinkan aplikasi untuk menggambar persegi panjang pelacakan saat memproses papan ketik atau pesan mouse. Sistem menggunakan metode ini ketika pengguna bergerak dan mengukur jendela. GetDCEx mengambil konteks perangkat tampilan dari cache konteks perangkat tampilan, sehingga aplikasi harus merilis konteks perangkat sesegera mungkin setelah menggambar.

Saat kunci pembaruan jendela diatur, sistem membuat akumulasi persegi panjang pembatas untuk setiap jendela terkunci. Ketika kunci dibersihkan, sistem menggunakan persegi panjang pembatas ini untuk mengatur wilayah pembaruan untuk jendela dan jendela anaknya, memaksa pesan WM_PAINT akhirnya. Jika akumulasi persegi panjang pembatas kosong (yaitu, jika tidak ada gambar yang terjadi saat kunci diatur), wilayah pembaruan tidak diatur.