IDirect3DDevice9::SetCursorProperties メソッド

IDirect3DDevice9::SetCursorProperties メソッド

カーソルのプロパティを設定する。

構文

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

パラメータ

  • XHotSpot
    [in] カーソルの中央を示す X 座標オフセット (ピクセル単位)。オフセットは、カーソルの左上からの相対位置で示す。カーソルが新しい位置に指定された場合、イメージは、この新しい位置からのオフセットに描かれる。この新しい位置は、その位置からホット スポットの座標を引くことによって決定された位置である。
  • YHotSpot
    [in] カーソルの中央を示す Y 座標オフセット (ピクセル単位)。オフセットは、カーソルの左上からの相対位置で示す。カーソルが新しい位置に指定された場合、イメージは、この新しい位置からのオフセットに描かれる。この新しい位置は、その位置からホット スポットの座標を引くことによって決定された位置である。
  • pCursorBitmap
    [in] IDirect3DSurface9 インターフェイスへのポインタ。このパラメータは、8888 ARGB サーフェイス (フォーマット D3DFMT_A8R8G8B8) をポイントしていなければならない。このサーフェイスのコンテンツは、カーソルの表示に使われる内部バッファにコピーされて、同時にフォーマット変換が行われる場合がある。このサーフェイスのディメンジョンはディスプレイ モードのディメンジョンより小さくなければならず、各方向とも 2 の累乗でなければならない。ただし、両方向が同じ大きさでなくてもかまわない。アルファ チャンネルは、0.0 または 1.0 でなければならない。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、D3DERR_INVALIDCALL を返す。

注意

次のいずれかの条件が満たされる場合に、オペレーティング システムのカーソルが作成および使用される。

  • ハードウェアが D3DCURSORCAPS_COLOR を設定し (D3DCURSORCAPS を参照)、カーソル サイズが 32x32 の場合 (これはオペレーティング システムのカーソル サイズである)。
  • アプリケーションがウィンドウ モードで実行されている場合。

これ以外の場合、Microsoft® DirectX® はエミュレーションされたカーソルを使う。アプリケーションは、IDirect3DDevice9::SetCursorPosition を使って、エミュレートされたカーソルをマウスの動きに合わせて移動する。

アプリケーション側では、常に WM_MOUSEMOVE イベントをトラップして DXSetCursorPosition を呼び出すことが推奨される。

Microsoft® Direct3D® のカーソル関数では、ハードウェアに応じて、Microsoft Windows® Graphics Device Interface (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 構造体の適切なメンバを調べることで、カーソルで利用可能なハードウェア サポートを確認できる。一般に、ハードウェアがサポートするのは 32 × 32 のカーソルだけである。また、ウィンドウ モードでは、システムがサポートできるのも 32 × 32 のカーソルだけである。その場合でも IDirect3DDevice9::SetCursorProperties は成功するが、カーソルはこのサイズに縮小される可能性がある。ホットスポットは適切にスケーリングされる。

カーソルは、デバイスが消失した後は保持されない。デバイスがリセットされた後、このメソッドを呼び出す必要がある。

参照

IDirect3DDevice9::ShowCursorD3DCAPS9