DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 SetCursorProperties [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
커서의 프로퍼티를 설정한다.
구문
HRESULT SetCursorProperties(
UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9 *pCursorBitmap );
파라미터
- XHotSpot
- [in] 커서의 중앙을 나타내는 X 좌표 오프셋(offset) (픽셀 단위). 오프셋(offset)는, 커서의 좌상으로부터의 상대 위치에서 가리킨다. 커서가 새로운 위치로 지정되었을 경우, 이미지는, 이 새로운 위치로부터의 오프셋(offset)에 그려진다. 이 새로운 위치는, 그 위치로부터 핫 스포트의 좌표를 당기는 것에 의해 결정된 위치이다.
- YHotSpot
- [in] 커서의 중앙을 나타내는 Y 좌표 오프셋(offset) (픽셀 단위). 오프셋(offset)는, 커서의 좌상으로부터의 상대 위치에서 가리킨다. 커서가 새로운 위치로 지정되었을 경우, 이미지는, 이 새로운 위치로부터의 오프셋(offset)에 그려진다. 이 새로운 위치는, 그 위치로부터 핫 스포트의 좌표를 당기는 것에 의해 결정된 위치이다.
- pCursorBitmap
- [in] IDirect3DSurface9 인터페이스의 포인터. 이 파라미터는, 8888 ARGB 표면 (포맷 D3DFMT_A8R8G8B8)를 포인트 하고 있지 않으면 안 된다. 이 표면의 컨텐츠는, 커서의 표시에 사용되는 내부 버퍼에 복사 되어, 동시에 포맷 변환을 하는 경우가 있다. 이 표면의 넓이는 디스플레이 모드의 넓이보다 작지 않으면 안되어, 각방향과도 2 의 거듭제곱이 아니면 안된다. 다만, 양방향이 같은 크기가 아니어도 상관없다. 알파 채널은, 0.0 또는 1.0 이 아니면 안된다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.
주의
다음의 몇개의 조건이 채워지는 경우에, operating system의 커서가 생성 및 사용된다.
- 하드웨어가 D3DCURSORCAPS_COLOR 를 설정해 (D3DCURSORCAPS 를 참조), 커서 사이즈가 32x32 의 경우 (이것은 operating system의 커서 사이즈이다).
- 애플리케이션이 윈도우 모드로 실행되고 있는 경우.
이외의 경우, 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::ShowCursor ,D3DCAPS9