Freigeben über


EngSetPointerShape-Funktion (winddi.h)

Die EngSetPointerShape-Funktion legt die Zeigerform für den aufrufenden Treiber fest.

Syntax

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

Zeiger auf eine SURFOBJ-Struktur , die die Zu zeichnende Oberfläche beschreibt.

[in] psoMask

Zeiger auf eine SURFOBJ-Struktur, die die AND-XOR-Maske definiert, die auf die Zeiger-Bitmap angewendet werden soll. Die obere Hälfte der Bitmap gibt die monochrome UND-Maske und die untere Hälfte die monochrome XOR-Maske an. Der Zeiger hat die gleiche Breite und die halbe Höhe der Maske, auf die psoMask zeigt. Es gibt keine impliziten Einschränkungen für Zeigergrößen, aber die optimalen Zeigergrößen sind 32 x 32, 48 x 48 und 64 x 64 Pixel. Wenn dieser Parameter NULL ist, ist der Zeiger transparent.

[in] psoColor

Zeiger auf eine SURFOBJ-Struktur, die die Farben für einen Farbzeiger definiert. Diese Bitmap hat die gleiche Breite und die halbe Höhe der Bitmap, auf die psoMask zeigt, und hat das gleiche Farbformat wie die Oberfläche, auf die pso zeigt. Wenn dieser Parameter NULL ist, ist der Zeiger monochrom.

[in] pxlo

Zeiger auf eine XLATEOBJ-Struktur , die die Farben in psoColor definiert.

[in] xHot

Gibt die x-Koordinate des Hotspots des Zeigers relativ zum linken oberen Pixel an. Das durch den Hotspot angegebene Pixel sollte an der neuen Zeigerposition positioniert werden.

[in] yHot

Gibt die y-Koordinate des Hotspots des Zeigers relativ zum linken oberen Pixel an. Das durch den Hotspot angegebene Pixel sollte an der neuen Zeigerposition positioniert werden.

[in] x

Gibt die x-Koordinaten der neuen Zeigerposition an.

[in] y

Gibt die y-Koordinaten der neuen Zeigerposition an.

[in] prcl

Zeiger auf eine RECTL-Struktur . Wenn nicht NULL, hat der Treiber ein Rechteck bereitgestellt, das alle Pixel eingrenzt, die vom Zeiger auf dem Display betroffen sind. GDI vermeidet das Zeichnen auf diesem Rechteck, ohne zuerst den Zeiger aus dem Weg zu verschieben.

[in] fl

Gibt eine Reihe von Flags an, die GDI zum Verarbeiten dieses Aufrufs verwenden soll. Bei diesem Parameter kann es sich um einen oder mehrere der folgenden vordefinierten Werte handeln:

Flag Bedeutung
SPS_ANIMATESTART GDI sollte darauf vorbereitet sein, eine Reihe von Zeigerformen ähnlicher Größe zu erhalten, die einen animierten Zeigereffekt umfassen.
SPS_ANIMATEUPDATE GDI sollte die nächste Zeigerform in der animierten Serie zeichnen.
SPS_CHANGE GDI wird angefordert, um die Zeigerform zu ändern.

Rückgabewert

EngSetPointerShape gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
SPS_ACCEPT_EXCLUDE
GDI akzeptiert die Form. GDI liest nicht aus dem am prcl geschriebenen Rechteck oder schreibt in diese, ohne zuerst den Zeiger aus dem Weg zu verschieben.
SPS_ERROR
GDI unterstützt diese Form normalerweise, ist aber aus ungewöhnlichen Gründen fehlgeschlagen.

Hinweise

Der Treiber kann EngSetPointerShape aufrufen, damit GDI einen Softwarecursor verwaltet.

Es gibt zwei Teile der monochromen Bitmap, auf die psoMask zeigt. Im ersten Teil wird die AND-Maske für den Zeiger definiert, während im zweiten Teil die XOR-Maske definiert wird. Zusammen stellen diese Masken zwei Informationsbits für jedes Pixel des Zeigersbilds bereit. Die folgende Wahrheitstabelle bestimmt, was GDI auf dem Display für verschiedene Werte in den MASKEN AND und XOR zeichnet:

AND-Wert XOR-Wert Resultierendes Pixel
0 0 Weiß
0 1 Schwarz
1 0 Keine Pixeländerung
1 1 Pixelfarbe ist invertiert
 

Dieser Mechanismus liefert ein Schwarzweißbild und ermöglicht gleichzeitig Transparenz und Inversion der Pixel, aus denen der Zeiger besteht.

Anforderungen

   
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header winddi.h (einschließlich Winddi.h)
Bibliothek Win32k.lib
DLL Win32k.sys

Weitere Informationen

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ