Freigeben über


IDirect3DDevice9::SetCursorProperties-Methode (d3d9.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 linken oberen Ecke des Cursors. Wenn der Cursor eine neue Position erhält, wird das Bild an einem Offset von dieser neuen Position gezeichnet, die durch Subtrahieren der Heißpunktkoordinaten von der Position bestimmt wird.

[in] YHotSpot

Typ: UINT

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

[in] pCursorBitmap

Typ: IDirect3DSurface9*

Zeiger auf eine IDirect3DSurface9-Schnittstelle . Dieser Parameter muss auf eine 8888 ARGB-Oberfläche verweisen (Format D3DFMT_A8R8G8B8). Der Inhalt dieser Oberfläche wird kopiert und möglicherweise formatiert in einen internen Puffer konvertiert, aus dem der Cursor angezeigt wird. Die Abmessungen dieser Oberfläche müssen kleiner als die Dimensionen des Anzeigemodus sein und eine Leistung von zwei in jede Richtung sein, obwohl 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 unter einer der folgenden Bedingungen erstellt und verwendet:

  • Die Hardware hat D3DCURSORCAPS_COLOR festgelegt (siehe D3DCURSORCAPS), und die Cursorgröße ist 32x32 (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 fangen und DXSetCursorPosition aufrufen.

Direct3D-Cursorfunktionen verwenden je nach Hardware entweder GDI-Cursor oder Softwareemulation. Benutzer möchten in der Regel auf eine WM_SETCURSOR Nachricht antworten. Sie können den Nachrichtenhandler z. B. wie folgt schreiben:


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 können 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 die Hardware nur 32x32-Cursor, und wenn ein Fenster geöffnet wird, unterstützt das System möglicherweise nur 32x32-Cursor. In diesem Fall ist IDirect3DDevice9::SetCursorProperties weiterhin erfolgreich, aber der Cursor wird möglicherweise auf diese Größe reduziert. Der Hotspot wird entsprechend skaliert.

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

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

D3DCAPS9

IDirect3DDevice9

IDirect3DDevice9::ShowCursor