Bagikan melalui


Fungsi EngSetPointerShape (winddi.h)

Fungsi EngSetPointerShape mengatur bentuk penunjuk untuk driver panggilan.

Sintaks

ENGAPI ULONG EngSetPointerShape(
  [in] SURFOBJ  *pso,
  [in] SURFOBJ  *psoMask,
  [in] SURFOBJ  *psoColor,
  [in] XLATEOBJ *pxlo,
  [in] LONG     xHot,
  [in] LONG     yHot,
  [in] LONG     x,
  [in] LONG     y,
  [in] RECTL    *prcl,
  [in] FLONG    fl
);

Parameter

[in] pso

Penunjuk ke struktur SURFOBJ yang menggambarkan permukaan untuk menggambar.

[in] psoMask

Penunjuk ke struktur SURFOBJ yang mendefinisikan masker AND-XOR untuk diterapkan ke bitmap pointer. Bagian atas bitmap menentukan monokrom DAN masker dan bagian bawah menentukan masker XOR monokrom. Penunjuk memiliki lebar yang sama dan setengah tinggi masker tempat psoMask menunjuk . Tidak ada batasan implisit pada ukuran pointer, tetapi ukuran pointer optimal adalah 32 x 32, 48 x 48, dan 64 x 64 piksel. Jika parameter ini NULL, penunjuk transparan.

[in] psoColor

Penunjuk ke struktur SURFOBJ yang menentukan warna untuk penunjuk warna. Bitmap ini memiliki lebar yang sama dan setengah tinggi bitmap tempat psoMask menunjuk , dan dalam format warna yang sama dengan permukaan tempat titik pso . Jika parameter ini NULL, penunjuknya adalah monokrom.

[in] pxlo

Penunjuk ke struktur XLATEOBJ yang menentukan warna dalam psoColor.

[in] xHot

Menentukan koordinat x titik panas penunjuk relatif terhadap piksel kiri atasnya. Piksel yang ditunjukkan oleh hot spot harus diposisikan pada posisi pointer baru.

[in] yHot

Menentukan koordinat y titik panas penunjuk relatif terhadap piksel kiri atasnya. Piksel yang ditunjukkan oleh hot spot harus diposisikan pada posisi pointer baru.

[in] x

Menentukan koordinat x dari posisi penunjuk baru.

[in] y

Menentukan koordinat y dari posisi penunjuk baru.

[in] prcl

Penunjuk ke struktur RECTL . Jika non-NULL, driver telah menyediakan persegi panjang yang mengikat semua piksel yang dipengaruhi oleh penunjuk pada layar. GDI menghindari menggambar pada persegi panjang ini tanpa terlebih dahulu memindahkan pointer keluar dari jalan.

[in] fl

Menentukan sekumpulan bendera yang harus digunakan GDI untuk memproses panggilan ini. Parameter ini bisa berupa satu atau beberapa nilai yang telah ditentukan sebelumnya berikut:

Bendera Makna
SPS_ANIMATESTART GDI harus disiapkan untuk menerima serangkaian bentuk penunjuk berukuran sama yang akan terdiri dari efek penunjuk animasi.
SPS_ANIMATEUPDATE GDI harus menggambar bentuk penunjuk berikutnya dalam seri animasi.
SPS_CHANGE GDI diminta untuk mengubah bentuk penunjuk.

Nilai kembali

EngSetPointerShape mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
SPS_ACCEPT_EXCLUDE
GDI menerima bentuknya. GDI tidak membaca dari atau menulis ke persegi panjang yang ditulis di rrcl tanpa terlebih dahulu memindahkan pointer keluar dari jalan.
SPS_ERROR
GDI biasanya mendukung bentuk ini, tetapi gagal karena alasan yang tidak biasa.

Keterangan

Driver dapat memanggil EngSetPointerShape agar GDI mengelola kursor perangkat lunak.

Ada dua bagian bitmap monokrom yang menunjuk psoMask . Bagian pertama mendefinisikan masker AND untuk pointer sementara bagian kedua mendefinisikan masker XOR. Disatukan, masker ini menyediakan dua bit informasi untuk setiap piksel gambar penunjuk. Tabel kebenaran berikut menentukan apa yang digambar GDI pada tampilan untuk nilai yang berbeda dalam masker AND dan XOR:

Nilai AND Nilai XOR Piksel Yang Dihasilkan
0 0 Putih
0 1 Hitam
1 0 Tidak ada perubahan piksel
1 1 Warna piksel terbalik
 

Mekanisme ini memasok gambar hitam dan putih sambil memungkinkan transparansi dan inversi piksel yang membentuk penunjuk.

Persyaratan

   
Klien minimum yang didukung Tersedia di Windows 2000 dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header winddi.h (termasuk Winddi.h)
Pustaka Win32k.lib
DLL Win32k.sys

Lihat juga

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ