IDirect3DDevice9::SetCursorProperties 方法 (d3d9.h)

设置游标的属性。

语法

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

参数

[in] XHotSpot

类型: UINT

标记光标中心的 X 坐标偏移量 () 像素。 偏移量相对于光标的左上角。 当光标获得新位置时,将从该位置减去热点坐标来确定的偏移量处绘制图像。

[in] YHotSpot

类型: UINT

标记光标中心的 Y 坐标偏移量 (像素) 。 偏移量相对于光标的左上角。 当光标获得新位置时,将从该位置减去热点坐标来确定的偏移量处绘制图像。

[in] pCursorBitmap

类型: IDirect3DSurface9*

指向 IDirect3DSurface9 接口的指针。 此参数必须指向 8888 ARGB 图面 (格式D3DFMT_A8R8G8B8) 。 此图面的内容将被复制,并可能将其格式转换为显示光标的内部缓冲区。 此图面的尺寸必须小于显示模式的尺寸,并且每个方向必须是 2 的幂,尽管不一定等于 2 的幂。 alpha 通道必须为 0.0 或 1.0。

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。 如果方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

在以下任一条件下创建和使用操作系统游标:

  • 硬件已设置D3DCURSORCAPS_COLOR (请参阅 D3DCURSORCAPS) ,光标大小为 32x32 (这是操作系统) 中的游标大小。
  • 应用程序以窗口模式运行。
否则,DirectX 使用模拟游标。 应用程序使用 IDirect3DDevice9::SetCursorPosition 移动模拟光标以跟随鼠标移动。

建议应用程序始终捕获WM_MOUSEMOVE事件并调用 DXSetCursorPosition。

Direct3D 游标函数使用 GDI 游标或软件仿真,具体取决于硬件。 用户通常想要响应WM_SETCURSOR消息。 例如,他们可能需要编写消息处理程序,如下所示:


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;

或者,如果用户想要更改游标,则可能需要调用 IDirect3DDevice9::SetCursorProperties 方法。

应用程序可以通过检查 D3DCAPS9 结构的相应成员来确定游标可用的硬件支持。 通常,硬件仅支持 32x32 游标,当窗口化时,系统可能仅支持 32x32 游标。 在这种情况下, IDirect3DDevice9::SetCursorProperties 仍然成功,但游标可能会减小到该大小。 适当缩放热点。

当设备丢失时,光标无法生存。 必须在重置设备后调用此方法。

要求

   
目标平台 Windows
标头 d3d9.h (包括 D3D9.h)
Library D3D9.lib

请参阅

D3DCAPS9

IDirect3DDevice9

IDirect3DDevice9::ShowCursor