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 fungsi LockWindowUpdate 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, fungsi GetDC dan BeginPaint mengembalikan konteks perangkat tampilan dengan wilayah terlihat yang kosong. Mengingat ini, aplikasi dapat terus menggambar di jendela, tetapi semua output dipotong. Kunci bertahan 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 fungsi GetDCEx , dengan nilai DCX_LOCKWINDOWUPDATE, untuk mengambil konteks perangkat tampilan untuk menggambar di atas jendela terkunci. Ini memungkinkan aplikasi untuk menggambar persegi panjang pelacakan saat memproses pesan keyboard atau mouse. Sistem menggunakan metode ini ketika pengguna memindahkan 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 persegi panjang batas akumulasi kosong (yaitu, jika tidak ada gambar yang terjadi saat kunci diatur), wilayah pembaruan tidak diatur.