다음을 통해 공유


DrvMovePointer 함수(winddi.h)

DrvMovePointer 함수는 포인터를 새 위치로 이동하고 GDI가 포인터 표시를 방해하지 않도록 합니다.

구문

void DrvMovePointer(
  [in] SURFOBJ *pso,
  [in] LONG    x,
  [in] LONG    y,
  [in] RECTL   *prcl
);

매개 변수

[in] pso

디스플레이 디바이스의 표면을 설명하는 SURFOBJ 구조체에 대한 포인터입니다.

[in] x

드라이버가 포인터의 핫 스폿을 배치해야 하는 디스플레이의 x 좌표를 지정합니다.

음수 x 값은 드로잉이 현재 있는 위치에서 발생하려고 하므로 드라이버가 디스플레이에서 포인터를 제거해야 했음을 나타냅니다. 포인터가 디스플레이에서 제거되고 x 값이 무수한 경우 드라이버는 포인터를 복원해야 합니다.

[in] y

드라이버가 포인터의 핫 스폿을 배치해야 하는 디스플레이의 y 좌표를 지정합니다.

드라이버가 DEVINFO 구조에서 GCAPS_PANNING 플래그를 설정한 경우 음수 y 값은 GDI가 커서의 현재 위치를 드라이버에 알리기 위해 이 함수를 호출하고 있음을 나타냅니다. 현재 위치는 (x, y+pso-sizlBitmap.cy>)로 계산할 수 있습니다. GCAPS_PANNING 플래그를 설정하지 않은 드라이버는 음수 y 좌표를 받지 않습니다.

[in] prcl

디스플레이의 포인터에 의해 영향을 받는 모든 픽셀을 경계하는 영역을 정의하는 RECTL 구조체에 대한 포인터입니다. GDI는 화면에서 포인터를 먼저 제거하지 않고 이 사각형에 그리지 않습니다. 이 매개 변수는 NULL일 수 있습니다.

반환 값

없음

설명

드라이버는 경우에 따라 화면에서 포인터의 현재 위치를 알아야 합니다 . GDI가 포인터를 시뮬레이션하는 경우에도 (드라이버가 더 이상 일반 DrvMovePointer 호출을 받지 않도록) - 이동 가상 디스플레이를 처리하기 위해. 이 알림을 받으려면 드라이버는 DEVINFO 구조체의 flGraphicsCaps 필드에 GCAPS_PANNING 플래그를 설정해야 합니다.

deVINFO의 flGraphicsCaps 멤버에서 GCAPS_ASYNCMOVE 플래그를 설정하지 않는 한 스레드가 디스플레이 드라이버에 그리는 동안 DrvMovePointer가 호출되지 않습니다.

DrvMovePointer는DrvSetPointerShape 도 구현된 경우에만 디스플레이 드라이버에서 구현해야 합니다.

드라이버가 DrvSetPointerShape를 사용하여 지정된 포인터를 등록한 경우 DrvMovePointer 는 실패하지 않아야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 winddi.h(Winddi.h 포함)

추가 정보

DEVINFO

DrvSetPointerShape

SURFOBJ