Fungsi ReportWindowContentInertia

[Beberapa informasi berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersurat maupun tersirat, sehubungan dengan informasi yang diberikan di sini.]

Melaporkan ke sistem apakah konten jendela yang ditentukan dalam keadaan inertia.

Sintaksis

WINUSERAPI
BOOL
WINAPI
ReportWindowContentInertia(
    HWND hWnd,
    BOOL bStartInertia);

Parameter-parameternya

hWnd

Handel ke jendela yang status inertia kontennya sedang dilaporkan.

bStartInertia

TRUE untuk melaporkan bahwa konten jendela telah memasuki inertia; FALSE untuk melaporkan bahwa inertia telah berhenti.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol.

Komentar

Konten jendela adalah "inertia" jika terus bergerak setelah dimanipulasi oleh input setelah aliran input selesai. Laporkan inertia ini sehingga input touchpad dapat menghentikan gerakan ini dengan benar jika sesuai.

Jika jendela dalam inertia, sistem mengubah caranya merespons input touchpad:

  • Tak lama setelah input touchpad baru tiba, sistem akan mengirim WM_STOPINERTIA ke jendela. Aplikasi harus bereaksi terhadap pesan ini dengan menghentikan gerakan kontennya, tetapi tidak harus bertransisi keluar dari status "dalam inertia" jika memiliki pengoptimalan untuk gerakan berulang yang memanipulasi konten yang sama (misalnya, input pengujian hit yang mendukung konten dalam inertia, atau mengingat kecepatan konten yang ada).
  • Jika sistem menentukan bahwa input touchpad mencoba menghentikan gerakan konten, sistem akan mengirim WM_ENDINERTIA ke jendela. Aplikasi harus bereaksi terhadap pesan ini dengan menghentikan gerakan kontennya dan keluar dari status "inertia".

Contoh skenario:

  • Pengguna melakukan ketuk cepat: WM_ENDINERTIA dikirim. Input mouse tidak diproduksi — ketukan hanya menghasilkan inertia akhir.
  • Pengguna memegang jari di touchpad dan kemudian mengangkatnya: WM_STOPINERTIA diikuti dengan WM_ENDINERTIA.
  • Pengguna melakukan gerakan dua jari cepat: Tidak ada pesan inertia. Gerakan berulang dimaksudkan untuk ditangani tanpa perlu menghentikan konten.
  • Pengguna memegang jari (atau dua) di touchpad dan kemudian melakukan gerakan dua jari: WM_STOPINERTIA. Dengan tinggal sebelum melakukan gerakan, ada kemungkinan pengguna mencoba menghentikan konten.

Meskipun dalam kebanyakan kasus, menerima WM_STOPINERTIA diikuti dengan WM_ENDINERTIA atau gerakan touchpad lainnya, itu tidak dijamin. Jika aplikasi menerapkan status konten khusus saat menerima WM_STOPINERTIA, status tersebut harus keluar setelah beberapa waktu. Demikian pula, WM_ENDINERTIA mungkin belum tentu didahului oleh WM_STOPINERTIA jika aliran input touchpad pendek.

Melaporkan inertia penting untuk menangani input touchpad dengan benar. Jika konten jendela dalam inertia dan tidak dilaporkan ke sistem, maka mengetuk touchpad akan mengakibatkan perilaku normal klik (mouse kiri ke bawah dan kiri ke atas). Aplikasi mungkin akhirnya memperlakukan input mouse ini sebagai berinteraksi dengan konten yang bergerak, mungkin mengakibatkan melakukan tindakan yang tidak diinginkan pengguna.

Untuk inertia yang disebabkan oleh sentuhan atau input pena, sistem tidak perlu secara khusus menangani input sehubungan dengan inertia, karena jendela yang kontennya inertia biasanya sama dengan yang menerima input berikutnya. Untuk input touchpad, sebaliknya, sistem membuat keputusan sebelum aplikasi menerima input apa pun. Melaporkan inertia yang disebabkan oleh sentuhan atau input pena masih disarankan sehingga jika pengguna mencoba menghentikan inertia dengan touchpad mereka, maka perilaku yang diharapkan terjadi.

Sistem hanya melacak satu jendela di inertia. Jika inertia sudah aktif ketika API ini dipanggil untuk melaporkan inertia yang dimulai pada jendela yang berbeda, informasi inertia sebelumnya akan diganti.

Jika melaporkan inertia dimulai, jendela yang ditentukan harus dimiliki oleh utas saat ini dan utas harus mengambil input dalam dua detik terakhir. Kemudian harus dilaporkan sebagai dihentikan setelah gerakan konten jendela berhenti (kecuali jendela diterima baik WM_STOPINERTIA atau WM_ENDINERTIA, dalam hal ini tidak perlu melaporkan inertia berhenti). Melaporkan inertia berhenti akan diabaikan secara diam-diam jika sistem tidak lagi melacak inertia, jika jendela yang dilacak tidak cocok dengan jendela yang ditentukan, atau jika jendela yang dilacak dimiliki oleh proses yang berbeda.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 11 [hanya aplikasi desktop]
Server minimum yang didukung Tidak ada yang didukung
Header Winuser.h (termasuk Windows.h)
Perpustakaan User32.lib
DLL User32.dll (ordinal 2695)

Baca juga