Bagikan melalui


Fungsi ScrollWindowEx (winuser.h)

Fungsi ScrollWindowEx menggulir konten area klien jendela yang ditentukan.

Sintaks

int ScrollWindowEx(
  [in]  HWND       hWnd,
  [in]  int        dx,
  [in]  int        dy,
  [in]  const RECT *prcScroll,
  [in]  const RECT *prcClip,
  [in]  HRGN       hrgnUpdate,
  [out] LPRECT     prcUpdate,
  [in]  UINT       flags
);

Parameter

[in] hWnd

Jenis: HWND

Tangani ke jendela tempat area klien akan digulir.

[in] dx

Jenis: int

Menentukan jumlah, dalam unit perangkat, dari pengguliran horizontal. Parameter ini harus berupa nilai negatif untuk menggulir ke kiri.

[in] dy

Jenis: int

Menentukan jumlah, dalam unit perangkat, dari pengguliran vertikal. Parameter ini harus berupa nilai negatif untuk menggulir ke atas.

[in] prcScroll

Jenis: const RECT*

Penunjuk ke struktur RECT yang menentukan bagian area klien yang akan digulir. Jika parameter ini NULL, seluruh area klien akan digulir.

[in] prcClip

Jenis: const RECT*

Penunjuk ke struktur RECT yang berisi koordinat persegi panjang kliping. Hanya bit perangkat dalam persegi panjang kliping yang terpengaruh. Bit yang digulir dari luar persegi panjang ke dalam dicat; bit yang digulir dari dalam persegi panjang ke luar tidak dicat. Parameter ini mungkin NULL.

[in] hrgnUpdate

Jenis: HRGN

Tangani ke wilayah yang dimodifikasi untuk menahan wilayah tidak valid dengan menggulir. Parameter ini mungkin NULL.

[out] prcUpdate

Jenis: LPRECT

Penunjuk ke struktur RECT yang menerima batas persegi panjang tidak valid dengan menggulir. Parameter ini mungkin NULL.

[in] flags

Jenis: UINT

Menentukan bendera yang mengontrol pengguliran. Parameter ini bisa menjadi kombinasi dari nilai berikut.

Nilai Makna
SW_ERASE
Menghapus wilayah yang baru tidak valid dengan mengirim pesan WM_ERASEBKGND ke jendela ketika ditentukan dengan bendera SW_INVALIDATE.
SW_INVALIDATE
Membatalkan wilayah yang diidentifikasi oleh parameter hrgnUpdate setelah menggulir.
SW_SCROLLCHILDREN
Menggulir semua jendela anak yang berpotongan persegi panjang yang ditunjukkan oleh parameter prcScroll . Jendela anak digulirkan oleh jumlah piksel yang ditentukan oleh parameter dx dan dy . Sistem mengirimkan pesan WM_MOVE ke semua jendela anak yang berpotongan persegi panjang prcScroll , bahkan jika mereka tidak bergerak.
SW_SMOOTHSCROLL
Menggulir menggunakan pengguliran halus. Gunakan bagian HIWORD dari parameter bendera untuk menunjukkan berapa banyak waktu, dalam milidetik, operasi pengguliran halus harus dilakukan.

Mengembalikan nilai

Jenis: int

Jika fungsi berhasil, nilai yang dikembalikan adalah SIMPLEREGION (wilayah tidak valid persegi panjang), COMPLEXREGION (wilayah yang tidak valid nonrektangular; persegi panjang yang tumpang tindih), atau NULLREGION (tidak ada wilayah yang tidak valid).

Jika fungsi gagal, nilai yang dikembalikan adalah ERROR. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jika bendera SW_INVALIDATE dan SW_ERASE tidak ditentukan, ScrollWindowEx tidak membatalkan area yang digulir. Jika salah satu bendera ini diatur, ScrollWindowEx membatalkan area ini. Area tidak diperbarui sampai aplikasi memanggil fungsi UpdateWindow , memanggil fungsi RedrawWindow (menentukan bendera RDW_UPDATENOW atau RDW_ERASENOW), atau mengambil pesan WM_PAINT dari antrean aplikasi.

Jika jendela memiliki gaya WS_CLIPCHILDREN , area yang dikembalikan yang ditentukan oleh hrgnUpdate dan prcUpdate mewakili area total jendela yang digulir yang harus diperbarui, termasuk area apa pun di jendela anak yang perlu diperbarui.

Jika bendera SW_SCROLLCHILDREN ditentukan, sistem tidak memperbarui layar dengan benar jika bagian dari jendela anak digulir. Bagian dari jendela anak yang digulir yang terletak di luar persegi panjang sumber tidak dihapus dan tidak digambar ulang dengan benar di tujuan barunya. Untuk memindahkan jendela anak yang tidak sepenuhnya berada dalam persegi panjang yang ditentukan oleh prcScroll, gunakan fungsi DeferWindowPos . Kursor diposisikan ulang jika bendera SW_SCROLLCHILDREN diatur dan persegi panjang tanda sisipan akan bersinggungan dengan persegi panjang gulir.

Semua koordinat input dan output (untuk prcScroll, prcClip, prcUpdate, dan hrgnUpdate) ditentukan sebagai koordinat klien, terlepas dari apakah jendela memiliki gaya kelas CS_OWNDC atau CS_CLASSDC . Gunakan fungsi LPtoDP dan DPtoLP untuk mengonversi ke dan dari koordinat logis, jika perlu.

Contoh

Misalnya, lihat Menggulir Teks dengan Pesan WM_PAINT.

Persyaratan

   
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-misc-l1-2-0 (diperkenalkan di Windows 8.1)

Lihat juga

DPtoLP

DeferWindowPos

LPtoDP

Sumber Daya Lain

RECT

RedrawWindow

UpdateWindow