Bagikan melalui


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 .

Nilai Makna
HWND_BOTTOM
((HWND)1)
Places jendela di bagian bawah urutan Z. Jika parameter hWnd mengidentifikasi jendela paling atas, jendela kehilangan status paling atas dan ditempatkan di bagian bawah semua jendela lainnya.
HWND_NOTOPMOST
((HWND)-2)
Places jendela di atas semua jendela non-teratas (yaitu, di belakang semua jendela paling atas). Bendera ini tidak berpengaruh jika jendela sudah menjadi jendela non-atas.
HWND_TOP
((HWND)0)
Places jendela di bagian atas urutan Z.
HWND_TOPMOST
((HWND)-1)
Places jendela di atas semua jendela non-teratas. Jendela mempertahankan posisi paling atas bahkan ketika dinonaktifkan.

[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
SWP_DRAWFRAME
0x0020
Menggambar bingkai (ditentukan dalam deskripsi kelas jendela) di sekitar jendela.
SWP_FRAMECHANGED
0x0020
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.
SWP_HIDEWINDOW
0x0080
Menyembunyikan jendela.
SWP_NOACTIVATE
0x0010
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 ).
SWP_NOCOPYBITS
0x0100
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.
SWP_NOMOVE
0x0002
Mempertahankan posisi saat ini (mengabaikan parameter x dan y ).
SWP_NOOWNERZORDER
0x0200
Tidak mengubah posisi jendela pemilik dalam urutan Z.
SWP_NOREDRAW
0x0008
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.
SWP_NOREPOSITION
0x0200
Sama seperti bendera SWP_NOOWNERZORDER .
SWP_NOSENDCHANGING
0x0400
Mencegah jendela menerima pesan WM_WINDOWPOSCHANGING .
SWP_NOSIZE
0x0001
Mempertahankan ukuran saat ini (mengabaikan parameter cx dan cy ).
SWP_NOZORDER
0x0004
Mempertahankan urutan Z saat ini (mengabaikan parameter hWndInsertAfter ).
SWP_SHOWWINDOW
0x0040
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.
Aplikasi tidak dapat mengaktifkan jendela yang tidak aktif tanpa juga membawanya ke bagian atas urutan Z. Aplikasi dapat mengubah posisi jendela yang diaktifkan dalam urutan Z tanpa batasan, atau dapat mengaktifkan jendela dan kemudian memindahkannya ke bagian atas jendela paling atas atau non-atas.

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

BeginDeferWindowPos

Konseptual

EndDeferWindowPos

Referensi

ShowWindow

Windows