IDirect3DDevice9::SetCursorProperties
カーソルのプロパティを設定します。
HRESULT
SetCursorProperties(
UINT XHotSpot,
UINT YHotSpot,
IDirect3DSurface9 * pCursorBitmap
);
パラメータ
- XHotSpot
カーソルの中心をマークする X 座標オフセット (ピクセル単位) です。オフセットはカーソルの左上隅を基準にしています。カーソルに新しい位置を指定すると、イメージは新しい位置からホット スポット座標を除算して決定される、新しい位置からのオフセットで描画されます。 - YHotSpot
カーソルの中心をマークする Y 座標オフセット (ピクセル単位) です。オフセットはカーソルの左上隅を基準にしています。カーソルに新しい位置を指定すると、イメージは新しい位置からホット スポット座標を除算して決定される、新しい位置からのオフセットで描画されます。 - pCursorBitmap
IDirect3DSurface9 インターフェイスへのポインターです。このパラメーターは、8888 ARGB サーフェス (フォーマット D3DFMT_A8R8G8B8) をポイントする必要があります。このサーフェスのコンテンツは、カーソルを表示するソースの内部バッファーにコピーされ、フォーマットも変更される場合があります。このサーフェスのサイズは、表示モードのサイズ未満である必要があり、各方向で 2 の累乗である必要がありますが、必ずしも同じ 2 の累乗である必要はありません。アルファ チャンネルは 0.0 または 1.0 である必要があります。
戻り値
メソッドが成功した場合は、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 は引き続き成功しますが、カーソルはそのサイズに縮小されることがあります。ホット スポットは適切にスケーリングされます。
デバイスが消失した場合、カーソルは存在しなくなります。デバイスをリセットした後、このメソッドを呼び出す必要があります。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容