Funzioni GetPointerTouchpadInfo

[Alcune informazioni riguardano il prodotto non rilasciato che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.]

Recupera informazioni sul puntatore specifico del touchpad. Sono disponibili quattro varianti a seconda che sia necessario un singolo puntatore o un intero frame e che sia necessario lo stato corrente o la cronologia completa.

Sintassi

WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfo(
    _In_ UINT32 pointerId,
    _Out_writes_(1) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfoHistory(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *entriesCount,
    _Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfo(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *pointerCount,
    _Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfoHistory(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *entriesCount,
    _Inout_ UINT32 *pointerCount,
    _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchpadInfo);

Parametri

pointerId

Identificatore del puntatore per il quale recuperare le informazioni.

entriesCount (varianti della cronologia)

Puntatore a un valore che specifica il numero di voci nel buffer. In input specifica le dimensioni del buffer. Nell'output riceve il numero di voci scritte.

pointerCount (varianti frame)

Puntatore a un valore che specifica il numero di puntatori nel frame. In input specifica le dimensioni del buffer. Nell'output riceve il numero di puntatori scritti.

touchpadInfo

Puntatore a una struttura POINTER_TOUCH_INFO che riceve le informazioni del touchpad. Può essere NULL per eseguire una query sulle dimensioni del buffer necessarie.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Recupera l'input del puntatore touchpad richiesto associato all'ID puntatore specificato. Il "frame" include tutti i contatti attualmente attivi recapitati alla stessa destinazione dell'input associato all'ID puntatore. La "cronologia" include qualsiasi input unito all'input corrente a causa della mancata coda dell'input precedente da parte della destinazione.

L'input del puntatore viene restituito in una struttura POINTER_TOUCH_INFO , proprio come gli equivalenti tocco di queste API, a causa dei campi del puntatore esteso identici per l'input tocco e touchpad.

Queste funzioni devono essere chiamate solo quando si elaborano WM_POINTER messaggi per l'input del touchpad (dopo la registrazione come compatibile con touchpad tramite RegisterTouchpadWindow o RegisterTouchpadCapableThread).

L'input del puntatore per i touchpad presenta alcune differenze funzionali rispetto ad altri tipi di dispositivo puntatore:

  • I campi ptPixelLocation e ptPixelLocationRaw sono identici e contengono la posizione del puntatore del mouse al momento dell'inizio del movimento e non cambiano per tutta la durata del movimento.
  • I campi ptHimetricLocation e ptHimetricLocationRaw sono identici e contengono la posizione del contatto rispetto al dispositivo.
  • GetPointerDeviceRects restituisce il desktop virtuale per la rettifica dello schermo e le dimensioni del touchpad per il dispositivo rect. Mentre le posizioni precedenti si troveranno all'interno dei limiti di questi recti, non esiste alcuna relazione tra i due. Per altri tipi di dispositivo puntatore, le rispettive posizioni si trovano nella stessa posizione relativa all'interno delle rispettive rects corrispondenti, ma questo non è il caso per l'input del touchpad.
  • Quando si riceve inizialmente un flusso di input, potrebbe esserci un divario spaziale e temporale significativo per ogni contatto tra il primo e il secondo fotogrammi di input. Mentre il sistema sta ancora eseguendo la disambiguazione sull'input del touchpad, i fotogrammi di input vengono eliminati. Se il sistema determina che si sta verificando un movimento, sintetizza un frame precedente per l'input POINTER_FLAG_DOWN dei contatti e lo recapita prima, in modo che la destinazione di input possa usare le informazioni per determinare se l'input ha raggiunto le soglie di riconoscimento del movimento. Se l'input viene usato per la manipolazione del contenuto, è necessario prestare attenzione a evitare il contenuto "saltando" all'inizio, che può verificarsi se il movimento spaziale dei contatti viene applicato direttamente come manipolazione del contenuto quando arriva l'input.
  • Se l'input del puntatore viene inserito nelle API del contesto di interazione per il riconoscimento dei movimenti:
    • È necessario usare ProcessPointerFramesInteractionContext2 e BufferPointerPacketsInteractionContext2 quando si inserisce l'input nel contesto di interazione.
    • Può verificarsi solo l'output dei movimenti di manipolazione (i tap e i blocchi non possono essere riconosciuti, perché il sistema genererà solo il touchpad WM_POINTER input una volta che questi movimenti non possono più verificarsi).
    • Se il contesto di interazione è configurato per restituire l'output nelle coordinate dello schermo, l'output viene ridimensionato dal fattore di scala dello schermo contenente il puntatore del mouse, in modo che lo stesso movimento sul touchpad restituisca lo stesso output effettivo del movimento indipendentemente dalla scala di visualizzazione.
    • Se configurato per l'output himetrico, lo stesso movimento produrrà gli stessi risultati indipendentemente dalla visualizzazione del puntatore del mouse. L'output viene ridimensionato in base alla velocità dell'input, in modo che il movimento del dito più veloce restituisca dimensioni di output maggiori per la stessa distanza fisica delle dita.
    • L'output eviterà il "salto" come descritto in precedenza e può essere applicato direttamente al contenuto per la manipolazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 11 [solo app desktop]
Server minimo supportato Nessuna supportata
Intestazione Winuser.h (includere Windows.h)
Libreria User32.lib
DLL User32.dll (ordinale 2691 per GetPointerTouchpadInfo, ordinale 2692 per GetPointerTouchpadInfoHistory, ordinale 2693 per GetPointerFrameTouchpadInfo, ordinale 2694 per GetPointerFrameTouchpadInfoHistory)

Vedere anche