Share via


DrvMovePointer-Funktion (winddi.h)

Die DrvMovePointer-Funktion verschiebt den Zeiger an eine neue Position und stellt sicher, dass GDI die Anzeige des Zeigers nicht beeinträchtigt.

Syntax

void DrvMovePointer(
  [in] SURFOBJ *pso,
  [in] LONG    x,
  [in] LONG    y,
  [in] RECTL   *prcl
);

Parameter

[in] pso

Zeiger auf eine SURFOBJ-Struktur , die die Oberfläche eines Anzeigegeräts beschreibt.

[in] x

Geben Sie die x-Koordinate auf der Anzeige an, an der der Treiber den Hotspot des Zeigers positionieren soll.

Ein negativer x-Wert gibt an, dass der Treiber den Zeiger aus der Anzeige entfernen soll, da das Zeichnen an der Stelle stattfindet, an der es sich derzeit befindet. Wenn der Zeiger aus der Anzeige entfernt wurde und der x-Wert nicht negativ ist, sollte der Treiber den Zeiger wiederherstellen.

[in] y

Geben Sie die y-Koordinate auf der Anzeige an, an der der Treiber den Hotspot des Zeigers positionieren soll.

Wenn der Treiber das flag GCAPS_PANNING in der DEVINFO-Struktur festgelegt hat, gibt ein negativer y-Wert an, dass GDI diese Funktion nur aufruft, um den Treiber über die aktuelle Position des Cursors zu informieren. Die aktuelle Position kann als (x, y+pso-sizlBitmap.cy>) berechnet werden. Ein Treiber, der das GCAPS_PANNING-Flag nicht festgelegt, erhält nie eine negative y-Koordinate.

[in] prcl

Zeiger auf eine RECTL-Struktur , die einen Bereich definiert, der alle Pixel begrenzt, die vom Zeiger auf der Anzeige betroffen sind. GDI zeichnet nicht in diesem Rechteck, ohne den Zeiger zuvor vom Bildschirm zu entfernen. Dieser Parameter kann NULL sein.

Rückgabewert

Keine

Bemerkungen

Treiber müssen manchmal die aktuelle Position des Zeigers auf dem Bildschirm kennen – auch wenn GDI den Zeiger simuliert (sodass der Treiber nicht mehr normale DrvMovePointer-Aufrufe erhält) − um das Schwenken virtueller Displays zu verarbeiten. Um diese Benachrichtigung zu erhalten, sollte der Treiber das flag GCAPS_PANNING im FlGraphicsCaps-Feld der DEVINFO-Struktur festlegen.

DrvMovePointer wird nicht aufgerufen, während ein Thread im Anzeigetreiber zeichnet, es sei denn, das flag GCAPS_ASYNCMOVE ist im flGraphicsCaps-Member von DEVINFO festgelegt.

DrvMovePointer muss nur in Anzeigetreibern implementiert werden, wenn auch DrvSetPointerShape implementiert ist.

Wenn ein Treiber den angegebenen Zeiger mit DrvSetPointerShape registriert hat, darf DrvMovePointer nicht fehlschlagen.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile winddi.h (einschließlich Winddi.h)

Weitere Informationen

DEVINFO

DrvSetPointerShape

SURFOBJ