Estrutura TOUCHINPUT (winuser.h)
Encapsula dados para entrada por toque.
Sintaxe
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;
Membros
x
A coordenada x (ponto horizontal) da entrada touch. Esse membro é indicado em centésimos de um pixel de coordenadas de tela físicas.
y
A coordenada y (ponto vertical) da entrada por toque. Esse membro é indicado em centésimos de um pixel de coordenadas de tela físicas.
hSource
Um identificador de dispositivo para o dispositivo de entrada de origem. Cada dispositivo recebe um provedor exclusivo em tempo de execução pelo provedor de entrada por toque. Consulte a seção Exemplos abaixo.
dwID
Um identificador de ponto de toque que distingue uma entrada de toque específica. Esse valor permanece consistente em uma sequência de contatos por toque a partir do ponto em que um contato aparece até que ele volte para cima. Uma ID pode ser reutilizado posteriormente para contatos subsequentes.
dwFlags
Um conjunto de sinalizadores de bits que especificam vários aspectos de pressionamento, liberação e movimento do ponto de toque. Os bits neste membro podem ser qualquer combinação razoável dos valores na seção Comentários.
dwMask
Um conjunto de sinalizadores de bits que especificam quais dos campos opcionais na estrutura contêm valores válidos. A disponibilidade de informações válidas nos campos opcionais é específica do dispositivo. Os aplicativos devem usar um valor de campo opcional somente quando o bit correspondente for definido em dwMask. Esse campo pode conter uma combinação dos sinalizadores dwMask mencionados na seção Comentários.
dwTime
O carimbo de data/hora do evento, em milissegundos. O aplicativo de consumo deve observar que o sistema não executa nenhuma validação nesse campo; quando o sinalizador TOUCHINPUTMASKF_TIMEFROMSYSTEM não está definido, a precisão e o sequenciamento de valores nesse campo dependem completamente do provedor de entrada por toque.
dwExtraInfo
Um valor adicional associado ao evento de toque.
cxContact
A largura da área de contato por toque em centésimos de pixel em coordenadas de tela físicas. Esse valor só será válido se o membro dwMask tiver o sinalizador TOUCHEVENTFMASK_CONTACTAREA definido.
cyContact
A altura da área de contato por toque em centésimos de pixel em coordenadas de tela físicas. Esse valor só será válido se o membro dwMask tiver o sinalizador TOUCHEVENTFMASK_CONTACTAREA definido.
Comentários
A tabela a seguir lista os sinalizadores para o membro dwFlags .
Sinalizador | Valor | Descrição |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | O movimento ocorreu. Não pode ser combinado com TOUCHEVENTF_DOWN. |
TOUCHEVENTF_DOWN | 0x0002 | O ponto de toque correspondente foi estabelecido por meio de um novo contato. Não pode ser combinado com TOUCHEVENTF_MOVE ou TOUCHEVENTF_UP. |
TOUCHEVENTF_UP | 0x0004 | Um ponto de toque foi removido. |
TOUCHEVENTF_INRANGE | 0x0008 | Um ponto de toque está no intervalo. Esse sinalizador é usado para habilitar o suporte ao foco de toque em hardware compatível. Aplicativos que não desejam suporte para focalização podem ignorar esse sinalizador. |
TOUCHEVENTF_PRIMARY | 0x0010 | Indica que essa estrutura TOUCHINPUT corresponde a um ponto de contato primário. Consulte o texto a seguir para obter mais informações sobre pontos de toque primários. |
TOUCHEVENTF_NOCOALESCE | 0x0020 | Quando recebida usando GetTouchInputInfo, essa entrada não foi agrupada. |
TOUCHEVENTF_PEN | 0x0040 | O evento de toque foi disparado por um dispositivo de caneta. |
TOUCHEVENTF_PALM | 0x0080 | O evento de toque foi disparado pela palma da mão do usuário. |
Sinalizador | Valor | Descrição |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact e cyContact são válidos. Consulte o texto a seguir para obter mais informações sobre pontos de toque primários. |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo é válido. |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | A hora do sistema foi definida na estrutura TOUCHINPUT . |
Um ponto de toque é designado como primário quando é o primeiro ponto de toque a ser estabelecido de um estado anterior sem pontos de toque. O sinalizador TOUCHEVENTF_PRIMARY continua a ser definido para todos os eventos subsequentes para o ponto de toque primário até que o ponto de toque primário seja liberado. Observe que um evento TOUCHEVENTF_UP no ponto de toque primário não designa necessariamente o fim de uma operação do Windows Touch; a operação atual do Windows Touch prossegue do estabelecimento do ponto de toque primário até que o último ponto de toque seja liberado.
Observe que um ponto de toque solitário ou, em um conjunto de pontos de toque simultâneos, o primeiro a ser detectado, é designado como primário. A posição do mouse do sistema segue o ponto de toque primário e, além de mensagens de toque, também gera mensagens de WM_LBUTTONDOWN, WM_MOUSEMOVE e WM_LBUTTONUP em resposta a ações em um ponto de toque primário. O ponto de toque primário também pode gerar mensagens WM_RBUTTONDOWN e WM_RBUTTONUP usando o gesto de pressionar e segurar.
Observe que o identificador de ponto de toque pode ser dinâmico e está associado a um determinado ponto de toque, desde que o ponto de toque persista. Se o contato for interrompido e retomado (por exemplo, se um dedo for removido da superfície e pressionado novamente), o mesmo ponto de toque (o mesmo dedo, caneta ou outro dispositivo desse tipo) poderá receber um identificador de ponto de toque diferente.
O tipo a seguir é definido para representar um ponteiro constante para uma estrutura TOUCHINPUT .
typedef TOUCHINPUT const * PCTOUCHINPUT;
Exemplos
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);
O exemplo a seguir mostra como obter as informações do dispositivo do membro hSource . Este exemplo usa GetRawInputDevice para recuperar informações sobre o 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 | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Cabeçalho | winuser.h (inclua Windows.h) |