Bagikan melalui


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
WVR_ALIGNTOP
0x0010
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 .
WVR_ALIGNRIGHT
0x0080
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.
WVR_ALIGNLEFT
0x0020
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 .
WVR_ALIGNBOTTOM
0x0040
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 .
WVR_HREDRAW
0x0100
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
WVR_VREDRAW
0x0200
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
WVR_REDRAW
0x0300
Nilai ini menyebabkan seluruh jendela digambar ulang. Ini adalah kombinasi dari nilai WVR_HREDRAW dan WVR_VREDRAW .
WVR_VALIDRECTS
0x0400
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
Winuser.h (termasuk Windows.h)

Lihat juga

Referensi

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE_PARAMS

Konseptual

Windows

Sumber Daya Lainnya

RECT