WM_NCCALCSIZE pesan
Dikirim ketika ukuran dan posisi area klien jendela harus dihitung. Dengan memproses pesan ini, aplikasi dapat mengontrol konten area klien jendela saat ukuran atau posisi jendela berubah.
Jendela menerima pesan ini melalui fungsi WindowProc-nya .
#define WM_NCCALCSIZE 0x0083
Parameter
-
wParam
-
Jika wParamTRUE, itu menentukan bahwa aplikasi harus menunjukkan bagian mana dari area klien yang berisi informasi yang valid. Sistem menyalin informasi yang valid ke area yang ditentukan dalam area klien baru.
Jika wParamFALSE, aplikasi tidak perlu menunjukkan bagian yang valid dari area klien.
-
lParam
-
Jika wParamTRUE, lParam menunjuk ke struktur NCCALCSIZE_PARAMS yang berisi informasi yang dapat digunakan aplikasi untuk menghitung ukuran dan posisi baru persegi panjang klien.
Jika wParamFALSE, lParam menunjuk ke struktur RECT . Pada entri, struktur berisi persegi jendela yang diusulkan untuk jendela. Saat keluar, struktur harus berisi koordinat layar area klien jendela yang sesuai.
Nilai kembali
Jenis: LRESULT
Jika parameter wParamFALSE, aplikasi harus mengembalikan nol.
Jika wParamTRUE, aplikasi harus mengembalikan nol atau kombinasi dari nilai berikut.
Jika wParamTRUE dan aplikasi mengembalikan nol, area klien lama dipertahankan dan selaras dengan sudut kiri atas area klien baru.
Mengembalikan kode/nilai | Deskripsi |
---|---|
|
Menentukan bahwa area klien jendela akan dipertahankan dan diselaraskan dengan bagian atas posisi baru jendela. Misalnya, untuk meratakan area klien ke sudut kiri atas, kembalikan nilai WVR_ALIGNTOP dan WVR_ALIGNLEFT . |
|
Menentukan bahwa area klien jendela akan dipertahankan dan diselaraskan dengan sisi kanan posisi baru jendela. Misalnya, untuk meratakan area klien ke sudut kanan bawah, kembalikan nilai WVR_ALIGNRIGHT dan WVR_ALIGNBOTTOM. |
|
Menentukan bahwa area klien jendela akan dipertahankan dan diselaraskan dengan sisi kiri posisi baru jendela. Misalnya, untuk meratakan area klien ke sudut kiri bawah, kembalikan nilai WVR_ALIGNLEFT dan WVR_ALIGNBOTTOM . |
|
Menentukan bahwa area klien jendela akan dipertahankan dan diselaraskan dengan bagian bawah posisi baru jendela. Misalnya, untuk meratakan area klien ke sudut kiri atas, kembalikan nilai WVR_ALIGNTOP dan WVR_ALIGNLEFT . |
|
Digunakan dalam kombinasi dengan nilai lain, kecuali WVR_VALIDRECTS, menyebabkan jendela benar-benar digambar ulang jika persegi panjang klien berubah ukuran secara horizontal. Nilai ini mirip dengan gaya kelas CS_HREDRAW |
|
Digunakan dalam kombinasi dengan nilai lain, kecuali WVR_VALIDRECTS, menyebabkan jendela benar-benar digambar ulang jika persegi panjang klien berubah ukuran secara vertikal. Nilai ini mirip dengan gaya kelas CS_VREDRAW |
|
Nilai ini menyebabkan seluruh jendela digambar ulang. Ini adalah kombinasi dari nilai WVR_HREDRAW dan WVR_VREDRAW . |
|
Nilai ini menunjukkan bahwa, setelah dikembalikan dari WM_NCCALCSIZE, persegi panjang yang ditentukan oleh anggota rgrc[1] dan rgrc[2] dari struktur NCCALCSIZE_PARAMS masing-masing berisi persegi panjang tujuan dan area sumber yang valid. Sistem menggabungkan persegi panjang ini untuk menghitung area jendela yang akan dipertahankan. Sistem menyalin bagian mana pun dari gambar jendela yang berada dalam persegi sumber dan mengklip gambar ke persegi tujuan. Kedua persegi panjang berada dalam koordinat relatif induk atau relatif layar. Bendera ini tidak dapat digabungkan dengan bendera lainnya. Nilai pengembalian ini memungkinkan aplikasi untuk menerapkan strategi pelestarian area klien yang lebih detail, seperti memusatkan atau mempertahankan subset area klien. |
Keterangan
Jendela dapat digambar ulang, tergantung pada apakah gaya kelas CS_HREDRAW atau CS_VREDRAW ditentukan. Ini adalah pemrosesan default dan kompatibel mundur dari pesan ini oleh fungsi DefWindowProc (selain perhitungan persegi panjang klien biasa yang dijelaskan dalam tabel sebelumnya).
Ketika wParamTRUE, hanya mengembalikan 0 tanpa memproses persegi panjang NCCALCSIZE_PARAMS akan menyebabkan area klien mengubah ukuran ke ukuran jendela, termasuk bingkai jendela. Ini akan menghapus bingkai jendela dan caption item dari jendela Anda, hanya menyisakan area klien yang ditampilkan.
Dimulai dengan Windows Vista, menghapus bingkai standar hanya dengan mengembalikan 0 ketika wParamtrue tidak mempengaruhi bingkai yang diperluas ke area klien menggunakan fungsi DwmExtendFrameIntoClientArea . Hanya bingkai standar yang akan dihapus.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
Header |
|
Lihat juga
-
Referensi
-
Konseptual
-
Sumber Daya Lainnya