Bagikan melalui


Tentang Kontrol Up-Down

Kontrol naik turun adalah sepasang tombol panah yang dapat diklik pengguna untuk meningkatkan atau mengurangi nilai, seperti posisi gulir atau angka yang ditampilkan dalam kontrol pendamping (disebut jendela teman).

Untuk pengguna, kontrol naik turun dan jendela temannya sering terlihat seperti kontrol tunggal. Anda dapat menentukan bahwa kontrol naik turun secara otomatis memposisikan dirinya sendiri di samping jendela temannya dan secara otomatis mengatur keterangan jendela teman ke posisinya saat ini. Misalnya, Anda dapat menggunakan kontrol naik turun dengan kontrol edit untuk meminta input numerik kepada pengguna. Ilustrasi berikut menunjukkan kontrol naik turun dengan kontrol edit sebagai jendela temannya, kombinasi yang terkadang disebut sebagai kontrol spinner.

cuplikan layar memperlihatkan kontrol persegi panjang pendek dan lebar dengan panah atas dan bawah di tepi kanan

Topik berikut dibahas di bagian ini.

Gaya Kontrol Up-Down

Dengan menggunakan gaya jendela, Anda dapat memanipulasi karakteristik kontrol naik turun, seperti bagaimana posisinya relatif terhadap jendela temannya, apakah itu mengatur teks jendela temannya, dan apakah itu memproses tombol PANAH ATAS dan PANAH BAWAH.

Kontrol naik turun dengan gaya UDS_ALIGNLEFT atau UDS_ALIGNRIGHT selaras dengan tepi kiri atau kanan jendela temannya. Lebar jendela sahabat dikurangi untuk mengakomodasi lebar kontrol atas-bawah.

Kontrol naik turun dengan gaya UDS_SETBUDDYINT mengatur keterangan jendela temannya setiap kali posisi saat ini berubah. Kontrol menyisipkan pemisah ribuan di antara setiap tiga digit string desimal kecuali gaya UDS_NOTHOUSANDS ditentukan. Jika jendela sahabat adalah kotak daftar, kontrol naik-turun mengatur pilihannya saat ini bukan keterangannya.

Anda dapat menentukan gaya UDS_ARROWKEYS untuk menyediakan antarmuka keyboard untuk kontrol naik turun. Jika gaya ini ditentukan, kontrol memproses tombol panah atas dan bawah. Kontrol juga mensubkelas jendela teman sehingga dapat memproses kunci ini ketika jendela teman memiliki fokus.

Jika Anda menggunakan kontrol naik turun untuk pengguliran horizontal, Anda dapat menentukan gaya UDS_HORZ. Gaya ini menyebabkan panah pada kontrol naik-turun menunjuk ke kiri dan kanan, bukan ke atas dan ke bawah.

Secara default, posisi saat ini tidak berubah jika pengguna mencoba untuk menaikkannya atau menurunkannya di luar nilai maksimum atau minimum. Anda dapat mengubah perilaku ini dengan menggunakan gaya UDS_WRAP, sehingga posisi "berputar" ke ekstrem yang berlawanan. Misalnya, menambah melewati batas atas mengembalikan posisi ke batas bawah.

Posisi dan Akselerasi

Setelah kontrol naik turun dibuat, Anda dapat mengubah posisi kontrol saat ini, posisi minimum, dan posisi maksimum dengan mengirim pesan. Anda juga dapat mengubah basis radiks yang digunakan untuk menampilkan posisi saat ini di jendela teman dan laju perubahan posisi saat ini saat panah atas atau bawah diklik.

Untuk mengambil posisi kontrol naik turun saat ini, gunakan pesan UDM_GETPOS. Untuk kontrol naik turun dengan jendela teman, posisi saat ini adalah angka dalam keterangan jendela teman. Karena keterangan mungkin telah berubah (misalnya, pengguna mungkin telah mengedit teks kontrol edit), kontrol naik-turun mengambil keterangan saat ini dan memperbarui posisi saat ini yang sesuai.

Keterangan jendela teman mungkin berupa string desimal atau heksadesimal, tergantung pada basis radiks (yaitu, 10 atau 16) dasar kontrol naik turun. Anda dapat mengatur basis radiks dengan menggunakan pesan UDM_SETBASE dan mengambil basis radix dengan menggunakan pesan UDM_GETBASE.

Pesan UDM_SETPOS mengatur posisi jendela teman saat ini. Perhatikan bahwa tidak seperti bilah gulir, kontrol naik turun secara otomatis mengubah posisinya saat ini ketika panah atas dan bawah diklik. Oleh karena itu, aplikasi tidak perlu mengatur posisi saat ini saat memproses pesan WM_VSCROLL atau WM_HSCROLL.

Anda dapat mengubah posisi minimum dan maksimum kontrol naik turun dengan menggunakan pesan UDM_SETRANGE. Posisi maksimum mungkin kurang dari minimum, dan dalam hal ini mengklik tombol panah atas mengurangi posisi saat ini. Dengan kata lain, ke atas berarti bergerak menuju titik maksimal. Untuk mengambil posisi minimum dan maksimum untuk kontrol naik turun, gunakan pesan UDM_GETRANGE.

Anda dapat mengontrol laju perubahan posisi saat pengguna menahan tombol panah dengan mengatur akselerasi kontrol naik turun. Akselerasi didefinisikan oleh array struktur UDACCEL. Setiap struktur menentukan interval waktu dan jumlah unit untuk kenaikan atau penurunan pada akhir interval tersebut. Untuk mengatur akselerasi, gunakan pesan UDM_SETACCEL. Untuk mengambil informasi akselerasi, gunakan pesan UDM_GETACCEL.

Pengaturan Awal Pemrosesan Pesan Kontrol Up-Down

Bagian ini menjelaskan pesan Windows standar yang diproses oleh kontrol up-down.

Pesan Pemrosesan dilakukan
WM_CREATE Mengalokasikan dan menginisialisasi struktur data privat dan menyimpan alamatnya sebagai data jendela.
WM_DESTROY Membebaskan data yang dialokasikan selama pemrosesan WM_CREATE.
WM_ENABLE Membatalkan jendela.
WM_KEYDOWN Mengubah posisi saat ini ketika tombol PANAH ATAS atau PANAH BAWAH ditekan.
WM_KEYUP Menyelesaikan perubahan posisi.
WM_LBUTTONDOWN Menangkap tetikus. Jika jendela teman adalah kontrol edit atau kotak daftar, jendela tersebut memusatkan fokus ke jendela teman. Jika mouse berada di atas tombol naik atau turun, ia mulai mengubah posisi dan mengatur pengatur waktu.
WM_LBUTTONUP Menyelesaikan perubahan posisi dan melepaskan tangkapan mouse jika kontrol naik turun telah menangkap mouse. Jika kotak teman adalah kontrol pengeditan, maka akan memilih semua teks dalam kontrol pengeditan.
WM_PAINT Mengecat kontrol naik turun. Jika parameter wParam tidak NULL, kontrol mengasumsikan bahwa nilainya adalah HDC dan melakukan pengecatan menggunakan konteks perangkat tersebut.
WM_TIMER Mengubah posisi saat ini jika mouse ditahan di atas tombol dan interval yang memadai telah berlalu.