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


структура POINTER_INFO (winuser.h)

Содержит основные сведения о указателе, общие для всех типов указателей. Приложения могут получать эти сведения с помощью функций GetPointerInfo, GetPointerFrameInfo, GetPointerInfoHistory и GetPointerFrameInfoHistory .

Синтаксис

typedef struct tagPOINTER_INFO {
  POINTER_INPUT_TYPE         pointerType;
  UINT32                     pointerId;
  UINT32                     frameId;
  POINTER_FLAGS              pointerFlags;
  HANDLE                     sourceDevice;
  HWND                       hwndTarget;
  POINT                      ptPixelLocation;
  POINT                      ptHimetricLocation;
  POINT                      ptPixelLocationRaw;
  POINT                      ptHimetricLocationRaw;
  DWORD                      dwTime;
  UINT32                     historyCount;
  INT32                      InputData;
  DWORD                      dwKeyStates;
  UINT64                     PerformanceCount;
  POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;

Члены

pointerType

Тип: POINTER_INPUT_TYPE

Значение из перечисления POINTER_INPUT_TYPE , указывающее тип указателя.

pointerId

Тип: UINT32

Идентификатор, однозначно определяющий указатель во время его существования. Указатель возникает при первом обнаружении и прекращает свое существование, когда он выходит за пределы диапазона обнаружения. Обратите внимание, что если физическая сущность (палец или перо) выходит за пределы диапазона обнаружения, а затем возвращается для обнаружения, она обрабатывается как новый указатель и может быть назначен новый идентификатор указателя.

frameId

Тип: UINT32

Идентификатор, общий для нескольких указателей, для которых исходное устройство сообщило об обновлении в одном входном кадре. Например, мультисенсорный дигитайзер с параллельным режимом может сообщать о положении нескольких сенсорных контактов в одном обновлении в системе.

Обратите внимание, что идентификатор кадра назначается как входные данные передаются в систему для всех указателей на всех устройствах. Таким образом, это поле не может содержать строго последовательные значения в одном ряду сообщений, получаемых окном. Однако это поле будет содержать одно и то же числовое значение для всех входных обновлений, которые были переданы в одном входном кадре одним устройством.

pointerFlags

Тип: POINTER_FLAGS

Может быть любым разумным сочетанием флагов из констант флагов указателя .

sourceDevice

Тип: HANDLE

Обработка исходного устройства, которое можно использовать в вызовах API необработанного устройства ввода и API устройства дигитайзера.

hwndTarget

Тип: HWND

Окно, в которое было нацелено это сообщение. Если указатель захватывается неявно из-за того, что он связался с этим окном, или явно с помощью API отслеживания указателя, это окно захвата. Если указатель не захвачен, это окно, над которым находился указатель при создании этого сообщения.

ptPixelLocation

Тип: POINT

Прогнозируемые экранные координаты указателя в пикселях.

Прогнозируемое значение основано на позиции указателя, сообщаемой дигитайзером, и движении указателя. Это исправление может компенсировать визуальную задержку из-за присущих задержек при зондировании и обработке расположения указателя на дигитайзере. Это применимо к указателям типа PT_TOUCH. Для других типов указателей прогнозируемое значение будет таким же, как и непрогнозированное значение (см. ptPixelLocationRaw).

ptHimetricLocation

Тип: POINT

Прогнозируемые экранные координаты указателя в единицах HIMETRIC.

Прогнозируемое значение основано на позиции указателя, сообщаемой дигитайзером, и движении указателя. Это исправление может компенсировать визуальную задержку из-за присущих задержек при зондировании и обработке расположения указателя на дигитайзере. Это применимо к указателям типа PT_TOUCH. Для других типов указателей прогнозируемое значение будет таким же, как и непрогнозированное значение (см. раздел ptHimetricLocationRaw).

ptPixelLocationRaw

Тип: POINT

Экранные координаты указателя в пикселях. Сведения о скорректированных координатах экрана см. в разделе ptPixelLocation.

ptHimetricLocationRaw

Тип: POINT

Экранные координаты указателя в единицах HIMETRIC. Сведения о скорректированных координатах экрана см. в разделе ptHimetricLocation.

dwTime

Тип: DWORD

0 или метка времени сообщения на основе системного числа тактов на момент получения сообщения.

Приложение может указать входную метку времени в dwTime или PerformanceCount. Значение не может быть более поздним, чем текущее число тактов или значение QueryPerformanceCount (QPC) потока внедрения. После вставки кадра с меткой времени все последующие кадры должны включать метку времени до тех пор, пока все контакты в кадре не перейдут в состояние UP . Значение настраиваемой метки времени также должно быть указано для первого элемента в массиве контактов. Значения меток времени после первого элемента игнорируются. Значение настраиваемой метки времени должно увеличиваться в каждом кадре внедрения.

Если указан параметр PerformanceCount , метка времени будет преобразована в текущее время в разрешении в 0,1 миллисекунда при фактическом внедрении. Если пользовательская функция PerformanceCount привела к тому же окну 0,1 миллисекунд из предыдущего внедрения, возвращается ERROR_NOT_READY и внедрение не выполняется. Хотя внедрение не будет немедленно признано ошибкой недействительным, следующее успешное внедрение должно иметь значение PerformanceCount , равное по крайней мере 0,1 миллисекунды от ранее успешного внедрения. Это также верно, если используется dwTime .

Если в параметре InjectTouchInput указаны значения dwTime и PerformanceCount, возвращается ERROR_INVALID_PARAMETER.

InjectTouchInput не может переключаться между dwTime и PerformanceCount после начала внедрения.

Если не указаны значения dwTime и PerformanceCount , То InjectTouchInput выделяет метку времени на основе времени вызова. Если количество вызовов InjectTouchInput не превышает 0,1 миллисекунды, может быть возвращено ERROR_NOT_READY. Ошибка не сделает входные данные недействительными немедленно, но для успешного внедрения приложение внедрения должно повторить попытку в том же кадре.

historyCount

Тип: UINT32

Количество входных данных, которые были объедины в это сообщение. Это число соответствует общему количеству записей, которые могут быть возвращены вызовом GetPointerInfoHistory. Если объединение не произошло, это число равно 1 для одного ввода, представленного сообщением.

InputData

dwKeyStates

Тип: DWORD

Указывает, какие клавиши-модификаторы клавиатуры были нажаты во время создания входных данных. Может иметь нулевое значение или сочетание следующих значений из состояния ключа модификатора.

POINTER_MOD_SHIFT — нажата клавиша SHIFT.

POINTER_MOD_CTRL — нажата клавиша CTRL.

Используйте GetKeyState.

PerformanceCount

Тип: UINT64

Значение счетчика производительности с высоким разрешением при получении сообщения указателя (высокая точность, 64-разрядная альтернатива dwTime). Значение может быть откалибровано, если оборудование дигитайзера сенсорного ввода поддерживает сведения о метке времени сканирования во входном отчете.

ButtonChangeType

Тип: POINTER_BUTTON_CHANGE_TYPE

Значение из перечисления POINTER_BUTTON_CHANGE_TYPE , указывающее изменение состояния кнопки между данными входными данными и предыдущими входными данными.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Верхняя часть winuser.h (включая Windows.h)

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

Структуры