Bagikan melalui


Wilayah Pembaruan Jendela Anak

Jendela anak adalah jendela dengan gaya WS_CHILD atau WS_CHILDWINDOW. Seperti gaya jendela lainnya, jendela anak menerima pesan WM_PAINT untuk diperbarui. Setiap jendela anak memiliki wilayah pembaruan, yang dapat diatur sistem atau aplikasi untuk menghasilkan pesan WM_PAINT akhirnya.

Pembaruan jendela anak dan wilayah yang terlihat dipengaruhi oleh jendela induk anak; ini tidak berlaku untuk jendela gaya lain. Sistem sering mengatur wilayah pembaruan jendela anak ketika mengatur wilayah pembaruan jendela induk, menyebabkan jendela anak menerima pesan WM_PAINT saat jendela induk menerimanya. Sistem membatasi lokasi wilayah jendela anak yang terlihat ke dalam area klien jendela induk dan mengklip bagian mana pun dari jendela anak yang dipindahkan ke luar jendela induk.

Sistem mengatur wilayah pembaruan untuk jendela anak setiap kali bagian dari wilayah pembaruan jendela induk menyertakan sebagian jendela anak. Dalam kasus seperti itu, sistem pertama-tama mengirim pesan WM_PAINT ke jendela induk lalu mengirim pesan ke jendela anak, memungkinkan anak memulihkan bagian jendela apa pun yang mungkin telah digambar oleh induk.

Sistem tidak mengatur wilayah pembaruan induk ketika anak diatur. Aplikasi tidak dapat menghasilkan pesan WM_PAINT untuk jendela induk dengan membatalkan jendela anak. Demikian pula, aplikasi tidak dapat menghasilkan pesan WM_PAINT untuk anak dengan membatalkan sebagian area klien induk yang sepenuhnya terletak di bawah jendela anak. Dalam kasus seperti itu, tidak ada jendela yang menerima pesan WM_PAINT .

Aplikasi dapat mencegah wilayah pembaruan jendela anak diatur saat jendela induk diatur dengan menentukan gaya WS_CLIPCHILDREN saat membuat jendela induk. Ketika gaya ini diatur, sistem mengecualikan jendela anak dari wilayah induk yang terlihat dan karenanya mengabaikan bagian mana pun dari wilayah pembaruan yang mungkin berisi jendela anak. Ketika aplikasi melukis di jendela induk, gambar apa pun yang akan menutupi jendela anak dipotong, membuat pesan WM_PAINT berikutnya ke jendela anak yang tidak perlu.

Wilayah pembaruan dan yang terlihat dari jendela anak juga dipengaruhi oleh saudara kandung jendela anak. Jendela saudara adalah jendela apa pun yang memiliki jendela induk umum. Jika jendela saudara tumpang tindih, maka mengatur wilayah pembaruan untuk satu mempengaruhi wilayah pembaruan yang lain, menyebabkan WM_PAINT pesan dikirim ke kedua jendela. Jika jendela dalam rantai induk terdiri (jendela dengan WX_EX_COMPOSITED), jendela saudara kandung menerima pesan WM_PAINT dalam urutan terbalik posisinya dalam urutan Z. Mengingat ini, jendela tertinggi dalam urutan Z (di bagian atas) menerima pesan WM_PAINT terakhir, dan sebaliknya. Jika jendela dalam rantai induk tidak dikomposisi, jendela saudara kandung menerima pesan WM_PAINT dalam urutan Z.

Jendela saudara tidak diklip secara otomatis. Satu saudara kandung dapat menggambar saudara kandung lain yang tumpang tindih bahkan jika jendela yang menggambar memiliki posisi yang lebih rendah dalam urutan Z. Aplikasi dapat mencegahnya dengan menentukan gaya WS_CLIPSIBLINGS saat membuat jendela. Ketika gaya ini diatur, sistem mengecualikan semua bagian jendela saudara yang tumpang tindih dari wilayah jendela yang terlihat jika jendela saudara tumpang tindih memiliki posisi yang lebih tinggi dalam urutan Z.

Catatan

Wilayah pembaruan dan yang terlihat untuk jendela yang memiliki gaya WS_POPUP atau WS_POPUPWINDOW tidak terpengaruh oleh jendela induknya.