структура 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) |