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 |
---|---|
|
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. |
|
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 |