IDirect3DDevice9::SetCursorProperties-Methode (d3d9helper.h)

Legt Eigenschaften für den Cursor fest.

Syntax

HRESULT SetCursorProperties(
  [in] UINT              XHotSpot,
  [in] UINT              YHotSpot,
  [in] IDirect3DSurface9 *pCursorBitmap
);

Parameter

[in] XHotSpot

Typ: UINT

X-Koordinatenoffset (in Pixel), der die Mitte des Cursors markiert. Der Offset ist relativ zur oberen linken Ecke des Cursors. Wenn dem Cursor eine neue Position zugeteilt wird, wird das Bild an einem Offset von dieser neuen Position gezeichnet, die durch Subtrahieren der Hotspotkoordinaten von der Position bestimmt wird.

[in] YHotSpot

Typ: UINT

Y-Koordinatenoffset (in Pixel), der die Mitte des Cursors markiert. Der Offset ist relativ zur oberen linken Ecke des Cursors. Wenn dem Cursor eine neue Position zugeteilt wird, wird das Bild an einem Offset von dieser neuen Position gezeichnet, die durch Subtrahieren der Hotspotkoordinaten von der Position bestimmt wird.

[in] pCursorBitmap

Typ: IDirect3DSurface9*

Zeiger auf eine IDirect3DSurface9-Schnittstelle . Dieser Parameter muss auf eine ARGB-Oberfläche vom Typ 8888 verweisen (Format D3DFMT_A8R8G8B8). Der Inhalt dieser Oberfläche wird kopiert und möglicherweise in einen internen Puffer konvertiert, aus dem der Cursor angezeigt wird. Die Abmessungen dieser Oberfläche müssen kleiner sein als die Abmessungen des Anzeigemodus und eine Leistung von zwei in jede Richtung, aber nicht notwendigerweise die gleiche Leistung von zwei. Der Alphakanal muss entweder 0,0 oder 1,0 sein.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert D3DERR_INVALIDCALL werden.

Hinweise

Ein Betriebssystemcursor wird erstellt und unter einer der folgenden Bedingungen verwendet:

  • Die Hardware hat D3DCURSORCAPS_COLOR festgelegt (siehe D3DCURSORCAPS), und die Cursorgröße beträgt 32 x 32 (dies ist die Cursorgröße im Betriebssystem).
  • Die Anwendung wird im Fenstermodus ausgeführt.
Andernfalls verwendet DirectX einen emulierten Cursor. Eine Anwendung verwendet IDirect3DDevice9::SetCursorPosition , um einen emulierten Cursor zu verschieben, um der Mausbewegung zu folgen.

Es wird empfohlen, dass Anwendungen immer WM_MOUSEMOVE Ereignisse abfangen und DXSetCursorPosition aufrufen.

Direct3D-Cursorfunktionen verwenden je nach Hardware entweder den GDI-Cursor oder die Softwareemulation. Benutzer möchten in der Regel auf eine WM_SETCURSOR-Nachricht antworten. Beispielsweise kann der Nachrichtenhandler wie folgt geschrieben werden:


case WM_SETCURSOR:
// Turn off window cursor. 
SetCursor( NULL );
m_pd3dDevice->ShowCursor( TRUE );
return TRUE; // Prevent Windows from setting cursor to window class cursor.
break;

Oder Benutzer möchten die IDirect3DDevice9::SetCursorProperties-Methode aufrufen, wenn sie den Cursor ändern möchten.

Die Anwendung kann ermitteln, welche Hardwareunterstützung für Cursor verfügbar ist, indem sie die entsprechenden Member der D3DCAPS9-Struktur untersucht. In der Regel unterstützt Hardware nur 32x32-Cursor, und wenn ein Fenster ausgeführt wird, unterstützt das System möglicherweise nur 32x32-Cursor. In diesem Fall ist IDirect3DDevice9::SetCursorProperties weiterhin erfolgreich, aber der Cursor kann auf diese Größe reduziert werden. Der Hotspot wird entsprechend skaliert.

Der Cursor bleibt nicht erhalten, wenn das Gerät verloren geht. Diese Methode muss aufgerufen werden, nachdem das Gerät zurückgesetzt wurde.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9helper.h (include D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

D3DCAPS9

IDirect3DDevice9

IDirect3DDevice9::ShowCursor