Mengatur Gambar Kursor

Kursor adalah gambar kecil yang menunjukkan lokasi mouse atau perangkat penunjuk lainnya. Banyak aplikasi mengubah gambar kursor untuk memberikan umpan balik kepada pengguna. Meskipun tidak diperlukan, itu menambahkan sedikit polesan yang bagus ke aplikasi Anda.

Windows menyediakan sekumpulan gambar kursor standar, yang disebut kursor sistem. Ini termasuk panah, tangan, sinar-I, jam jam (yang sekarang menjadi lingkaran berputar), dan lainnya. Bagian ini menjelaskan cara menggunakan kursor sistem. Untuk tugas tingkat lanjut lainnya, seperti membuat kursor kustom, lihat Kursor.

Anda dapat mengaitkan kursor dengan kelas jendela dengan mengatur anggota hCursor struktur WNDCLASS atau WNDCLASSEX . Jika tidak, kursor default adalah panah. Ketika mouse bergerak di atas jendela, jendela menerima pesan WM_SETCURSOR (kecuali jendela lain telah menangkap mouse). Pada titik ini, salah satu peristiwa berikut terjadi:

  • Aplikasi mengatur kursor dan prosedur jendela mengembalikan TRUE.
  • Aplikasi tidak melakukan apa pun dan meneruskan WM_SETCURSOR ke DefWindowProc.

Untuk mengatur kursor, program melakukan hal berikut:

  1. Memanggil LoadCursor untuk memuat kursor ke dalam memori. Fungsi ini mengembalikan handel ke kursor.
  2. Memanggil SetCursor dan meneruskan handel kursor.

Jika tidak, jika aplikasi meneruskan WM_SETCURSOR ke DefWindowProc, fungsi DefWindowProc menggunakan algoritma berikut untuk mengatur gambar kursor:

  1. Jika jendela memiliki induk, teruskan pesan WM_SETCURSOR ke induk untuk ditangani.
  2. Jika tidak, jika jendela memiliki kursor kelas, atur kursor ke kursor kelas.
  3. Jika tidak ada kursor kelas, atur kursor ke kursor panah.

Fungsi LoadCursor dapat memuat kursor kustom dari sumber daya, atau salah satu kursor sistem. Contoh berikut menunjukkan cara mengatur kursor ke tautan sistem yang telah ditentukan, pilih kursor.

    LPCTSTR cursor = IDC_HAND;
    hCursor = LoadCursor(NULL, cursor);
    SetCursor(hCursor);

Jika Anda mengubah kursor, gambar kursor direset pada gerakan mouse berikutnya, kecuali Anda mencegat pesan WM_SETCURSOR dan mengatur kursor lagi. Kode berikut menunjukkan cara menangani WM_SETCURSOR.

    case WM_SETCURSOR:
        if (LOWORD(lParam) == HTCLIENT)
        {
            SetCursor(hCursor);
            return TRUE;
        }
        break;

Kode ini pertama kali memeriksa 16 bit lParam yang lebih rendah. Jika LOWORD(lParam) sama dengan HTCLIENT, itu berarti kursor berada di atas area klien jendela. Jika tidak, kursor berada di area nonkelola. Biasanya, Anda hanya boleh mengatur kursor untuk area klien, dan membiarkan Windows mengatur kursor untuk area nonkelola.

Berikutnya

Input Pengguna: Contoh yang Diperluas