Метод IDirect3DDevice9::SetCursorProperties (d3d9helper.h)

Задает свойства курсора.

Синтаксис

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

Параметры

[in] XHotSpot

Тип: UINT

Смещение координат по оси X (в пикселях), обозначающее центр курсора. Смещение определяется относительно левого верхнего угла курсора. Когда курсору присваивается новое положение, изображение рисуется со смещением от этой новой позиции, определяемым путем вычитания координат горячей точки из положения.

[in] YHotSpot

Тип: UINT

Смещение координаты Y (в пикселях), обозначающее центр курсора. Смещение определяется относительно левого верхнего угла курсора. Когда курсору присваивается новое положение, изображение рисуется со смещением от этой новой позиции, определяемым путем вычитания координат горячей точки из положения.

[in] pCursorBitmap

Тип: IDirect3DSurface9*

Указатель на интерфейс IDirect3DSurface9 . Этот параметр должен указывать на поверхность ARGB 8888 (формат D3DFMT_A8R8G8B8). Содержимое этой поверхности будет скопировано и потенциально преобразовано во внутренний буфер, из которого отображается курсор. Размеры этой поверхности должны быть меньше размеров режима отображения и должны быть мощностью 2 в каждом направлении, хотя и не обязательно одинаковой мощности двух. Альфа-канал должен иметь значение 0.0 или 1.0.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается сбоем, возвращаемое значение можно D3DERR_INVALIDCALL.

Комментарии

Курсор операционной системы создается и используется при любом из следующих условий:

  • Оборудование задало D3DCURSORCAPS_COLOR (см . D3DCURSORCAPS), а размер курсора составляет 32 x 32 (это размер курсора в операционной системе).
  • Приложение работает в оконном режиме.
В противном случае 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
Header d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

См. также раздел

D3DCAPS9

IDirect3DDevice9

IDirect3DDevice9::ShowCursor