Compartir a través de


Estructura TOUCHINPUT (winuser.h)

Encapsula los datos para la entrada táctil.

Sintaxis

typedef struct tagTOUCHINPUT {
  LONG      x;
  LONG      y;
  HANDLE    hSource;
  DWORD     dwID;
  DWORD     dwFlags;
  DWORD     dwMask;
  DWORD     dwTime;
  ULONG_PTR dwExtraInfo;
  DWORD     cxContact;
  DWORD     cyContact;
} TOUCHINPUT, *PTOUCHINPUT;

Miembros

x

Coordenada x (punto horizontal) de la entrada táctil. Este miembro se indica en centésimas de píxel de coordenadas de pantalla físicas.

y

Coordenada y (punto vertical) de la entrada táctil. Este miembro se indica en centésimas de píxel de coordenadas de pantalla físicas.

hSource

Identificador de dispositivo para el dispositivo de entrada de origen. El proveedor de entrada táctil asigna a cada dispositivo un proveedor único en tiempo de ejecución. Consulte la sección Ejemplos a continuación.

dwID

Identificador de punto táctil que distingue una entrada táctil determinada. Este valor permanece coherente en una secuencia de contactos táctiles desde el punto en que un contacto llega hasta que vuelve a subir. Un identificador se puede reutilizar más adelante para los contactos posteriores.

dwFlags

Conjunto de marcas de bits que especifican varios aspectos de la prensa, liberación y movimiento del punto táctil. Los bits de este miembro pueden ser cualquier combinación razonable de los valores de la sección Comentarios.

dwMask

Conjunto de marcas de bits que especifican cuáles de los campos opcionales de la estructura contienen valores válidos. La disponibilidad de información válida en los campos opcionales es específica del dispositivo. Las aplicaciones solo deben usar un valor de campo opcional cuando el bit correspondiente se establece en dwMask. Este campo puede contener una combinación de las marcas dwMask mencionadas en la sección Comentarios.

dwTime

Marca de tiempo del evento, en milisegundos. La aplicación de consumo debe tener en cuenta que el sistema no realiza ninguna validación en este campo; cuando no se establece la marca TOUCHINPUTMASKF_TIMEFROMSYSTEM , la precisión y la secuenciación de valores de este campo dependen completamente del proveedor de entrada táctil.

dwExtraInfo

Valor adicional asociado al evento táctil.

cxContact

Ancho del área de contacto táctil en centésimas de píxel en coordenadas de pantalla física. Este valor solo es válido si el miembro dwMask tiene establecida la marca TOUCHEVENTFMASK_CONTACTAREA .

cyContact

Alto del área de contacto táctil en centésimas de píxel en coordenadas de pantalla física. Este valor solo es válido si el miembro dwMask tiene establecida la marca TOUCHEVENTFMASK_CONTACTAREA .

Comentarios

En la tabla siguiente se enumeran las marcas del miembro dwFlags .

Marca Value Descripción
TOUCHEVENTF_MOVE 0x0001 Se ha producido el movimiento. No se puede combinar con TOUCHEVENTF_DOWN.
TOUCHEVENTF_DOWN 0x0002 El punto táctil correspondiente se estableció a través de un nuevo contacto. No se puede combinar con TOUCHEVENTF_MOVE o TOUCHEVENTF_UP.
TOUCHEVENTF_UP 0x0004 Se quitó un punto táctil.
TOUCHEVENTF_INRANGE 0x0008 Un punto táctil está en el intervalo. Esta marca se usa para habilitar la compatibilidad con el puntero táctil en hardware compatible. Las aplicaciones que no quieran admitir el puntero pueden omitir esta marca.
TOUCHEVENTF_PRIMARY 0x0010 Indica que esta estructura TOUCHINPUT corresponde a un punto de contacto principal. Consulte el texto siguiente para obtener más información sobre los puntos táctiles principales.
TOUCHEVENTF_NOCOALESCE 0x0020 Cuando se recibió mediante GetTouchInputInfo, esta entrada no se fusionó.
TOUCHEVENTF_PEN 0x0040 El evento táctil se desencadenó mediante un dispositivo de lápiz óptico.
TOUCHEVENTF_PALM 0x0080 La palma del usuario desencadenó el evento táctil.
 
Nota Si el hardware de destino de una máquina no admite el puntero, cuando se establece la marca TOUCHEVENTF_UP , se borra la marca TOUCHEVENTF_INRANGE . Si el hardware de destino de una máquina admite el puntero, las marcas TOUCHEVENTF_UP y TOUCHEVENTF_INRANGE se establecerán de forma independiente.
 
En la tabla siguiente se enumeran las marcas del miembro dwMask .
Marca Value Descripción
TOUCHINPUTMASKF_CONTACTAREA 0x0004 cxContact y cyContact son válidos. Consulte el texto siguiente para obtener más información sobre los puntos táctiles principales.
TOUCHINPUTMASKF_EXTRAINFO 0x0002 dwExtraInfo es válido.
TOUCHINPUTMASKF_TIMEFROMSYSTEM 0x0001 La hora del sistema se estableció en la estructura TOUCHINPUT .
 

Un punto táctil se designa como principal cuando es el primer punto táctil que se va a establecer a partir de un estado anterior sin puntos táctiles. La marca TOUCHEVENTF_PRIMARY continúa establecida para todos los eventos posteriores del punto táctil principal hasta que se libere el punto táctil principal. Tenga en cuenta que un evento de TOUCHEVENTF_UP en el punto táctil principal no designa necesariamente el final de una operación de Windows Touch; La operación actual de Windows Touch continúa desde el establecimiento del punto táctil principal hasta que se libere el último punto táctil.

Tenga en cuenta que un punto de contacto solitario o, en un conjunto de puntos táctiles simultáneos, el primero que se va a detectar, se designa como principal. La posición del mouse del sistema sigue el punto táctil principal y, además de los mensajes táctiles, también genera WM_LBUTTONDOWN, WM_MOUSEMOVE y WM_LBUTTONUP mensajes en respuesta a acciones en un punto táctil principal. El punto táctil principal también puede generar WM_RBUTTONDOWN y WM_RBUTTONUP mensajes mediante el gesto de presionar y mantener presionado.

Tenga en cuenta que el identificador de punto táctil puede ser dinámico y está asociado a un punto táctil determinado solo siempre que el punto táctil persista. Si el contacto está roto y luego se reanuda (por ejemplo, si se quita un dedo de la superficie y luego se presiona de nuevo), el mismo punto táctil (el mismo dedo, lápiz u otro dispositivo de este tipo) puede recibir un identificador de punto táctil diferente.

El siguiente tipo se define para representar un puntero constante a una estructura TOUCHINPUT .


   typedef TOUCHINPUT const * PCTOUCHINPUT;
    

Ejemplos

Nota En el ejemplo siguiente, la matriz pInputs no está ordenada. Use el valor dwID para realizar un seguimiento de puntos táctiles específicos.
 
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
    if (GetTouchInputInfo((HTOUCHINPUT)lParam,
                          cInputs,
                          pInputs,
                          sizeof(TOUCHINPUT)))
    {
        // process pInputs
        if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
        {
            // error handling
        }
    }
    else
    {
        // GetLastError() and error handling
    }
    delete [] pInputs;
}
else
{
    // error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);

En el ejemplo siguiente se muestra cómo obtener la información del dispositivo del miembro hSource . En este ejemplo se usa GetRawInputDevice para recuperar información sobre el dispositivo.

for (UINT i = 0; i < cInputs; i++){
  TOUCHINPUT ti = pInputs[i];      
  RID_DEVICE_INFO info;
  ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
  info.cbSize = sizeof(RID_DEVICE_INFO);
  UINT size = 0;
  if (GetRawInputDeviceInfo(ti.hSource, RIDI_DEVICEINFO, &info, &size)){
  }else{
    DWORD err = GetLastError();
  }
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Encabezado winuser.h (incluir Windows.h)

Consulte también

GetTouchInputInfo

Estructuras