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) |
![]() |
IDC_IBEAM MAKEINTRESOURCE(32513) |
![]() |
IDC_WAIT MAKEINTRESOURCE(32514) |
![]() |
IDC_CROSS MAKEINTRESOURCE(32515) |
![]() |
IDC_UPARROW MAKEINTRESOURCE(32516) |
![]() |
IDC_SIZENWSE MAKEINTRESOURCE(32642) |
![]() |
IDC_SIZENESW MAKEINTRESOURCE(32643) |
![]() |
IDC_SIZEWE MAKEINTRESOURCE(32644) |
![]() |
IDC_SIZENS MAKEINTRESOURCE(32645) |
![]() |
IDC_SIZEALL MAKEINTRESOURCE(32646) |
![]() |
IDC_NO MAKEINTRESOURCE(32648) |
![]() |
IDC_HAND MAKEINTRESOURCE(32649) |
![]() |
IDC_APPSTARTING MAKEINTRESOURCE(32650) |
![]() |
IDC_HELP MAKEINTRESOURCE(32651) |
![]() |
IDC_PIN MAKEINTRESOURCE(32671) |
![]() |
IDC_PERSON MAKEINTRESOURCE(32672) |
![]() |
Sejumlah kursor tambahan juga tersedia yang tidak memiliki pengidentifikasi yang ditentukan dalam WinUser.h (atau dianggap usang):
Nilai | Makna |
---|---|
MAKEINTRESOURCE(32631) | ![]() |
MAKEINTRESOURCE(32652) | ![]() |
MAKEINTRESOURCE(32653) | ![]() |
MAKEINTRESOURCE(32654) | ![]() |
MAKEINTRESOURCE(32655) | ![]() |
MAKEINTRESOURCE(32656) | ![]() |
MAKEINTRESOURCE(32657) | ![]() |
MAKEINTRESOURCE(32658) | ![]() |
MAKEINTRESOURCE(32659) | ![]() |
MAKEINTRESOURCE(32660) | ![]() |
MAKEINTRESOURCE(32661) | ![]() |
MAKEINTRESOURCE(32662) | ![]() |
MAKEINTRESOURCE(32663) | ![]() |
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.
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
- Mouse dan Kursor
- Pembuatan Kursor
- Lokasi dan Tampilan Kursor
- Kursor Kurungan
- Penghancuran Kursor
- Duplikasi Kursor
- Kursor Kelas Jendela
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.
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.
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:
- LoadCursor
- LoadCursorFromFile
- LoadImage (jika Anda menggunakan bendera LR_SHARED )
- CopyImage (jika Anda menggunakan bendera LR_COPYRETURNORG dan hImage adalah 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.