Fungsi DeferWindowPos (winuser.h)
Updates struktur beberapa jendela – posisi yang ditentukan untuk jendela yang ditentukan. Fungsi kemudian mengembalikan handel ke struktur yang diperbarui. Fungsi EndDeferWindowPos menggunakan informasi dalam struktur ini untuk mengubah posisi dan ukuran sejumlah jendela secara bersamaan. Fungsi BeginDeferWindowPos membuat struktur.
Sintaks
HDWP DeferWindowPos(
[in] HDWP hWinPosInfo,
[in] HWND hWnd,
[in, optional] HWND hWndInsertAfter,
[in] int x,
[in] int y,
[in] int cx,
[in] int cy,
[in] UINT uFlags
);
Parameter
[in] hWinPosInfo
Jenis: HDWP
Handel ke struktur beberapa jendela – posisi yang berisi informasi ukuran dan posisi untuk satu atau beberapa jendela. Struktur ini dikembalikan oleh BeginDeferWindowPos atau oleh panggilan terbaru ke DeferWindowPos.
[in] hWnd
Jenis: HWND
Handel ke jendela tempat informasi pembaruan disimpan dalam struktur. Semua jendela dalam beberapa jendela – struktur posisi harus memiliki induk yang sama.
[in, optional] hWndInsertAfter
Jenis: HWND
Handel ke jendela yang mendahului jendela yang diposisikan dalam urutan Z. Parameter ini harus berupa handel jendela atau salah satu nilai berikut. Parameter ini diabaikan jika bendera SWP_NOZORDER diatur dalam parameter uFlags .
[in] x
Jenis: int
Koordinat x sudut kiri atas jendela.
[in] y
Jenis: int
Koordinat y dari sudut kiri atas jendela.
[in] cx
Jenis: int
Lebar baru jendela, dalam piksel.
[in] cy
Jenis: int
Tinggi jendela baru, dalam piksel.
[in] uFlags
Jenis: UINT
Kombinasi nilai berikut yang memengaruhi ukuran dan posisi jendela.
Nilai | Makna |
---|---|
|
Menggambar bingkai (ditentukan dalam deskripsi kelas jendela) di sekitar jendela. |
|
Mengirim pesan WM_NCCALCSIZE ke jendela, meskipun ukuran jendela tidak diubah. Jika bendera ini tidak ditentukan, WM_NCCALCSIZE dikirim hanya ketika ukuran jendela sedang diubah. |
|
Menyembunyikan jendela. |
|
Tidak mengaktifkan jendela. Jika bendera ini tidak diatur, jendela diaktifkan dan dipindahkan ke bagian atas grup paling atas atau non-teratas (tergantung pada pengaturan parameter hWndInsertAfter ). |
|
Membuang seluruh isi area klien. Jika bendera ini tidak ditentukan, konten area klien yang valid disimpan dan disalin kembali ke area klien setelah jendela berukuran atau diposisikan ulang. |
|
Mempertahankan posisi saat ini (mengabaikan parameter x dan y ). |
|
Tidak mengubah posisi jendela pemilik dalam urutan Z. |
|
Tidak menggambar ulang perubahan. Jika bendera ini diatur, tidak ada pengecatan ulang dalam bentuk apa pun yang terjadi. Ini berlaku untuk area klien, area nonclient (termasuk bilah judul dan bilah gulir), dan bagian mana pun dari jendela induk yang terungkap sebagai akibat dari jendela yang dipindahkan. Ketika bendera ini diatur, aplikasi harus secara eksplisit membatalkan atau menggambar ulang bagian jendela dan jendela induk yang perlu digambar ulang. |
|
Sama seperti bendera SWP_NOOWNERZORDER . |
|
Mencegah jendela menerima pesan WM_WINDOWPOSCHANGING . |
|
Mempertahankan ukuran saat ini (mengabaikan parameter cx dan cy ). |
|
Mempertahankan urutan Z saat ini (mengabaikan parameter hWndInsertAfter ). |
|
Menampilkan jendela. |
Nilai kembali
Jenis: HDWP
Nilai yang dikembalikan mengidentifikasi struktur beberapa jendela – posisi yang diperbarui. Handel yang dikembalikan oleh fungsi ini mungkin berbeda dari handel yang diteruskan ke fungsi. Handel baru yang dikembalikan fungsi ini harus diteruskan selama panggilan berikutnya ke fungsi DeferWindowPos atau EndDeferWindowPos .
Jika sumber daya sistem yang tidak mencukup tersedia agar fungsi berhasil, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Jika panggilan ke DeferWindowPos gagal, aplikasi harus meninggalkan operasi penempatan jendela dan tidak memanggil EndDeferWindowPos.
Jika SWP_NOZORDER tidak ditentukan, sistem menempatkan jendela yang diidentifikasi oleh parameter hWnd dalam posisi setelah jendela yang diidentifikasi oleh parameter hWndInsertAfter . Jika hWndInsertAfterNULL atau HWND_TOP, sistem menempatkan jendela hWnd di bagian atas urutan Z. Jika hWndInsertAfter diatur ke HWND_BOTTOM, sistem menempatkan jendela hWnd di bagian bawah urutan Z.
Semua koordinat untuk jendela anak relatif terhadap sudut kiri atas area klien jendela induk.
Jendela dapat dibuat menjadi jendela paling atas baik dengan mengatur hWndInsertAfter ke bendera HWND_TOPMOST dan memastikan bahwa bendera SWP_NOZORDER tidak diatur, atau dengan mengatur posisi jendela dalam urutan Z sehingga berada di atas jendela paling atas yang ada. Ketika jendela non-atas dibuat paling atas, jendela yang dimilikinya juga dibuat paling atas. Namun, pemiliknya tidak diubah.
Jika bendera SWP_NOACTIVATE atau SWP_NOZORDER tidak ditentukan (yaitu, ketika aplikasi meminta agar jendela diaktifkan secara bersamaan dan posisinya dalam urutan Z berubah), nilai yang ditentukan dalam hWndInsertAfter hanya digunakan dalam keadaan berikut:
- Bendera HWND_TOPMOST atau HWND_NOTOPMOST tidak ditentukan dalam hWndInsertAfter.
- Jendela yang diidentifikasi oleh hWnd bukan jendela aktif.
Jendela paling atas tidak lagi paling atas jika diposisikan ulang ke bagian bawah (HWND_BOTTOM) dari urutan Z atau setelah jendela non-paling atas. Ketika jendela paling atas dibuat non-topmost, pemilik dan jendela yang dimilikinya juga dibuat jendela non-topmost.
Jendela non-paling atas dapat memiliki jendela paling atas, tetapi bukan sebaliknya. Jendela apa pun (misalnya, kotak dialog) yang dimiliki oleh jendela paling atas sendiri dibuat sebagai jendela paling atas untuk memastikan bahwa semua jendela yang dimiliki tetap berada di atas pemiliknya.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (termasuk Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-window-l1-1-4 (diperkenalkan dalam Windows 10, versi 10.0.14393) |
Lihat juga
Konseptual
Referensi