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. |
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
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) |