Поделиться через


Функция 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 на дисплее, где драйвер должен разместить горячую точку указателя.

Если драйвер установил флаг GCAPS_PANNING в структуре DEVINFO , отрицательное значение y указывает, что GDI вызывает эту функцию только для уведомления драйвера о текущем положении курсора. Текущую позицию можно вычислить как (x, y+pso-sizlBitmap.cy>). Драйвер, который не устанавливает флаг GCAPS_PANNING, никогда не получит отрицательную координату Y .

[in] prcl

Указатель на структуру RECTL , определяющую область, ограничивающую все пиксели, на которые влияет указатель на дисплее. GDI не будет рисовать в этом прямоугольнике без предварительного удаления указателя с экрана. Этот параметр может принимать значение NULL.

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

None

Remarks

Иногда драйверам требуется знать текущее положение указателя на экране , даже если GDI имитирует указатель (чтобы драйвер больше не получал обычные вызовы DrvMovePointer ) для обработки сдвига виртуальных дисплеев. Чтобы получить это уведомление, драйвер должен установить флаг GCAPS_PANNING в поле flGraphicsCaps структуры DEVINFO .

DrvMovePointer не будет вызываться при рисовании потока в драйвере дисплея, если флаг GCAPS_ASYNCMOVE не установлен в элементе flGraphicsCaps devINFO.

DrvMovePointer необходимо реализовать в драйверах отображения только при реализации DrvSetPointerShape .

Если драйвер зарегистрировал указанный указатель с помощью DrvSetPointerShape, DrvMovePointer не должен завершаться ошибкой.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть winddi.h (включая Winddi.h)

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

DEVINFO

DrvSetPointerShape

SURFOBJ