Tentang Kursor

Windows menyediakan sekumpulan kursor standar yang dapat digunakan oleh aplikasi. Pengidentifikasi kursor berikut didefinisikan dalam WinUser.h:

Nilai Makna
IDC_ARROW
MAKEINTRESOURCE(32512)
Pilih normal
IDC_IBEAM
MAKEINTRESOURCE(32513)
Teks pilih
IDC_WAIT
MAKEINTRESOURCE(32514)
Sibuk
IDC_CROSS
MAKEINTRESOURCE(32515)
Pilih presisi
IDC_UPARROW
MAKEINTRESOURCE(32516)
Pilih alternatif
IDC_SIZENWSE
MAKEINTRESOURCE(32642)
Mengubah ukuran diagonal 1
IDC_SIZENESW
MAKEINTRESOURCE(32643)
Mengubah ukuran diagonal 2
IDC_SIZEWE
MAKEINTRESOURCE(32644)
Ubah ukuran horizontal
IDC_SIZENS
MAKEINTRESOURCE(32645)
Mengubah ukuran vertikal
IDC_SIZEALL
MAKEINTRESOURCE(32646)
Bergerak
IDC_NO
MAKEINTRESOURCE(32648)
Tidak tersedia
IDC_HAND
MAKEINTRESOURCE(32649)
Pilih tautan
IDC_APPSTARTING
MAKEINTRESOURCE(32650)
Bekerja di latar belakang
IDC_HELP
MAKEINTRESOURCE(32651)
Bantuan pilih
IDC_PIN
MAKEINTRESOURCE(32671)
Pilih lokasi
IDC_PERSON
MAKEINTRESOURCE(32672)
Pilih Orang

Sejumlah kursor tambahan juga tersedia yang tidak memiliki pengidentifikasi yang ditentukan dalam WinUser.h (atau dianggap usang):

Nilai Makna
MAKEINTRESOURCE(32631) Kursor pena.
MAKEINTRESOURCE(32652) Kursor bergulir dengan panah menunjuk ke utara dan selatan.
MAKEINTRESOURCE(32653) Kursor gulir dengan panah menunjuk ke barat dan timur.
MAKEINTRESOURCE(32654) Kursor bergulir dengan panah menunjuk ke utara, selatan, timur, dan barat.
MAKEINTRESOURCE(32655) Kursor bergulir dengan panah menunjuk ke utara.
MAKEINTRESOURCE(32656) Kursor gulir dengan panah menunjuk ke selatan.
MAKEINTRESOURCE(32657) Kursor gulir dengan panah menunjuk ke barat.
MAKEINTRESOURCE(32658) Kursor gulir dengan panah menunjuk ke timur.
MAKEINTRESOURCE(32659) Kursor bergulir dengan panah menunjuk ke utara dan barat.
MAKEINTRESOURCE(32660) Kursor bergulir dengan panah menunjuk ke utara dan timur.
MAKEINTRESOURCE(32661) Kursor gulir dengan panah menunjuk ke selatan dan barat.
MAKEINTRESOURCE(32662) Kursor gulir dengan panah menunjuk ke selatan dan timur.
MAKEINTRESOURCE(32663) Kursor cd panah.

Lihat Panduan untuk informasi tentang menggunakan kursor standar.

Setiap kursor standar memiliki gambar default yang sesuai yang terkait dengannya. Pengguna atau aplikasi dapat menggantikan gambar default yang terkait dengan kursor standar apa pun kapan saja. Aplikasi mengganti gambar default dengan menggunakan fungsi SetSystemCursor.

Aplikasi dapat menggunakan fungsi GetIconInfo untuk mengambil gambar saat ini untuk kursor dan dapat menggambar kursor dengan menggunakan fungsi DrawIconEx.

Kursor kustom dirancang untuk digunakan dalam aplikasi tertentu dan dapat menjadi desain apa pun yang ditentukan pengembang. Ilustrasi berikut menunjukkan beberapa kursor kustom.

custom cursors, including hand, banana, drum, wristwatch on hand, metronome

Kursor dapat berupa monokrom atau warna, dan statis atau animasi. Jenis kursor yang digunakan pada sistem komputer tertentu bergantung pada tampilan sistem. Tampilan lama seperti VGA tidak mendukung kursor warna atau animasi. Tampilan baru, yang driver tampilannya menggunakan mesin bitmap independen perangkat (DIB), mendukungnya.

Kursor dan ikon serupa dan dapat digunakan secara bergantian dalam banyak situasi. Satu-satunya perbedaan di antara mereka adalah bahwa gambar yang ditentukan sebagai kursor harus dalam format yang dapat didukung tampilan. Misalnya, kursor harus monokrom untuk tampilan VGA.

Gambaran umum ini menyediakan informasi tentang topik berikut:

The Hot Spot

Di kursor, piksel yang disebut hot spot menandai lokasi layar yang tepat yang dipengaruhi oleh peristiwa mouse, seperti mengklik tombol mouse. Biasanya, hot spot adalah titik fokus kursor. Sistem melacak dan mengenali titik ini sebagai posisi kursor. Misalnya, hot spot umum adalah piksel di ujung kursor berbentuk panah dan piksel di tengah kursor berbentuk crosshair. Gambar berikut menunjukkan dua kursor dari program menggambar, di mana hot spot dikaitkan dengan ujung kuas dan crosshair kaleng cat.

hot spots on two cursors

Ketika peristiwa input mouse terjadi, driver mouse menerjemahkan peristiwa ke dalam pesan mouse yang sesuai yang mencakup koordinat hot spot. Sistem mengirim pesan mouse ke jendela yang berisi hot spot atau ke jendela yang menangkap input mouse. Untuk informasi selengkapnya, lihat Input Mouse.

Mouse dan Kursor

Sistem mencerminkan pergerakan mouse dengan menggerakkan kursor pada layar yang sesuai. Saat kursor berpindah ke berbagai bagian jendela atau ke jendela yang berbeda, sistem (atau aplikasi) mengubah tampilan kursor. Misalnya, saat kursor melintasi hyperlink, sistem mengubah kursor dari panah ke tangan.

standard cursor changing to a hand when over a hyperlink

Jika sistem tidak memiliki mouse, sistem akan menampilkan dan memindahkan kursor hanya ketika pengguna memilih perintah sistem tertentu, seperti yang digunakan untuk mengukur atau memindahkan jendela. Untuk memberi pengguna metode menampilkan dan memindahkan kursor saat mouse tidak tersedia, aplikasi dapat menggunakan fungsi kursor untuk mensimulasikan gerakan mouse. Mengingat kemampuan simulasi ini, pengguna dapat menggunakan tombol panah untuk memindahkan kursor.

Pembuatan Kursor

Karena kursor standar telah ditentukan sebelumnya, tidak perlu membuatnya. Untuk menggunakan kursor standar, aplikasi mengambil handel kursor dengan menggunakan fungsi LoadCursor atau LoadImage. Handel kursor adalah nilai unik dari jenis HCURSOR yang mengidentifikasi kursor standar atau kustom.

Untuk membuat kursor kustom untuk aplikasi, Anda biasanya menggunakan aplikasi grafis dan menyertakan kursor sebagai sumber daya dalam file definisi sumber daya aplikasi. Pada waktu proses, panggil LoadCursor untuk mengambil handel kursor. Sumber daya kursor berisi data untuk beberapa perangkat tampilan yang berbeda. Fungsi LoadCursor secara otomatis memilih data yang paling tepat untuk perangkat tampilan saat ini. Untuk memuat kursor langsung dari . CUR atau . File ANI, gunakan fungsi LoadCursorFromFile.

Anda juga dapat membuat kursor kustom pada waktu proses dengan menggunakan fungsi CreateIconIndirect, yang membuat kursor berdasarkan konten struktur ICONINFO. Fungsi GetIconInfo mengisi struktur ini dengan koordinat hot spot dan informasi mengenai masker dan warna terkait.

Aplikasi harus menerapkan kursor kustom sebagai sumber daya dan menggunakan LoadCursor, LoadCursorFromFile, atau LoadImage daripada membuat kursor pada waktu proses. Menggunakan sumber daya kursor menghindari ketergantungan perangkat, menyederhanakan pelokalan, dan memungkinkan aplikasi berbagi desain kursor.

Fungsi CreateIconFromResourceEx memungkinkan aplikasi membuat ikon dan kursor berdasarkan data sumber daya. CreateIconFromResourceEx membuat kursor berdasarkan data sumber daya biner dari file atau DLL executable (.exe) lainnya. Ini harus didahului oleh panggilan ke fungsi LookupIconIdFromDirectoryEx , serta beberapa fungsi sumber daya. LookupIconIdFromDirectoryEx mengidentifikasi data kursor yang paling tepat untuk perangkat tampilan saat ini. Untuk informasi selengkapnya tentang fungsi sumber daya, lihat Sumber Daya.

Lokasi dan Tampilan Kursor

Sistem secara otomatis menampilkan kursor untuk mouse dan memperbarui posisinya pada layar. Anda dapat memperoleh koordinat layar kursor saat ini dan memindahkan kursor ke lokasi mana pun di layar dengan menggunakan fungsi GetCursorPos dan SetCursorPos.

Anda juga dapat mengambil handel ke kursor saat ini dengan menggunakan fungsi GetCursor, dan Anda dapat mengatur kursor dengan menggunakan fungsi SetCursor. Setelah Anda memanggil SetCursor, tampilan kursor tidak berubah sampai mouse bergerak, kursor secara eksplisit diatur ke kursor yang berbeda, atau perintah sistem dijalankan.

Ketika pengguna memindahkan mouse, sistem akan mengurai ulang kursor di lokasi baru. Sistem secara otomatis menggambar ulang desain kursor yang terkait dengan jendela tempat kursor menunjuk.

Anda dapat menyembunyikan dan memutar ulang kursor, tanpa mengubah desain kursor, dengan menggunakan fungsi ShowCursor. Fungsi ini menggunakan penghitung internal untuk menentukan kapan harus menyembunyikan atau menampilkan kursor. Upaya untuk menunjukkan kursor menaikkan penghitung; upaya untuk menyembunyikan dekremen kursor penghitung. Kursor hanya terlihat jika penghitung ini lebih besar dari atau sama dengan nol.

Fungsi GetCursorInfo mendapatkan informasi berikut untuk kursor global: apakah kursor disembunyikan atau ditampilkan, handel ke kursor, dan koordinat kursor.

Kursor Kurungan

Anda dapat membatasi kursor ke area persegi panjang di layar dengan menggunakan fungsi ClipCursor. Ini berguna ketika pengguna harus menanggapi peristiwa tertentu dalam area terbatas persegi panjang. Misalnya, Anda mungkin menggunakan ClipCursor untuk membatasi kursor ke kotak dialog modal, mencegah pengguna berinteraksi dengan jendela lain hingga kotak dialog ditutup.

Fungsi GetClipCursor mengambil koordinat layar area persegi panjang tempat kursor terbatas sementara. Ketika perlu untuk membatasi kursor, Anda juga dapat menggunakan fungsi ini untuk menyimpan koordinat area asli tempat kursor dapat bergerak. Kemudian, Anda dapat memulihkan kursor ke area asli ketika kurungan baru tidak lagi diperlukan.

Penghancuran Kursor

Anda dapat menghancurkan handel kursor dan membebaskan memori yang digunakan kursor dengan memanggil fungsi DestroyCursor. Namun, fungsi ini tidak berpengaruh pada kursor bersama. Kursor bersama valid selama modul tempat kursor dimuat tetap dalam memori. Fungsi berikut mendapatkan kursor bersama:

Ketika Anda tidak lagi memerlukan kursor yang Anda buat dengan menggunakan fungsi CreateIconIndirect , Anda harus menghancurkan kursor. Fungsi DestroyIcon menghancurkan handel kursor dan membebaskan memori apa pun yang digunakan kursor. Gunakan fungsi ini hanya pada kursor yang dibuat dengan CreateIconIndirect.

Duplikasi Kursor

Fungsi CopyCursor menyalin handel kursor. Ini memungkinkan aplikasi atau kode DLL untuk mengambil handel ke kursor yang dimiliki oleh modul lain. Kemudian, jika modul lain dibesarkan, modul yang menyalin kursor masih dapat menggunakan desain kursor.

Untuk informasi tentang cara menambahkan, menghapus, atau mengganti sumber daya kursor dalam file yang dapat dieksekusi, lihat Sumber Daya.

Kursor Kelas Jendela

Saat Mendaftarkan kelas jendela, menggunakan fungsi RegisterClass, Anda dapat menetapkannya kursor default, yang dikenal sebagai kursor kelas. Setelah aplikasi mendaftarkan kelas jendela, setiap jendela kelas tersebut memiliki kursor kelas yang ditentukan.

Untuk mengambil alih kursor kelas, proses pesan WM_SETCURSOR. Anda juga dapat mengganti kursor kelas dengan menggunakan fungsi SetClassLong. Fungsi ini mengubah pengaturan jendela default untuk semua jendela kelas tertentu. Untuk informasi selengkapnya, lihat Kursor Kelas.