Função GetMouseMovePointsEx (winuser.h)
Recupera um histórico de até 64 coordenadas anteriores do mouse ou da caneta.
Sintaxe
int GetMouseMovePointsEx(
[in] UINT cbSize,
[in] LPMOUSEMOVEPOINT lppt,
[out] LPMOUSEMOVEPOINT lpptBuf,
[in] int nBufPoints,
[in] DWORD resolution
);
Parâmetros
[in] cbSize
Tipo: UINT
O tamanho, em bytes, da estrutura MOUSEMOVEPOINT .
[in] lppt
Tipo: LPMOUSEMOVEPOINT
Um ponteiro para uma estrutura MOUSEMOVEPOINT que contém coordenadas válidas do mouse (em coordenadas de tela). Ele também pode conter um carimbo de data/hora.
A função GetMouseMovePointsEx pesquisa o ponto no histórico de coordenadas do mouse. Se a função encontrar o ponto, ela retornará os últimos nBufPoints antes e incluindo o ponto fornecido.
Se o aplicativo fornecer um carimbo de data/hora, a função GetMouseMovePointsEx o usará para diferenciar entre dois pontos iguais que foram registrados em momentos diferentes.
Um aplicativo deve chamar essa função usando as coordenadas do mouse recebidas da mensagem WM_MOUSEMOVE e convertê-las em coordenadas de tela.
[out] lpptBuf
Tipo: LPMOUSEMOVEPOINT
Um ponteiro para um buffer que receberá os pontos. Ele deve ter pelo menos cbSize* nBufPoints em tamanho.
[in] nBufPoints
Tipo: int
O número de pontos a serem recuperados.
[in] resolution
Tipo: DWORD
A resolução desejada. Esse parâmetro pode usar um dos valores a seguir.
Retornar valor
Tipo: int
Se a função for bem-sucedida, o valor retornado será o número de pontos no buffer. Caso contrário, a função retornará –1. Para obter informações de erro estendidas, seu aplicativo pode chamar GetLastError.
Comentários
O sistema retém as últimas 64 coordenadas do mouse e seus carimbos de data/hora. Se o aplicativo fornecer uma coordenada do mouse para GetMouseMovePointsEx e a coordenada existir no histórico de coordenadas do mouse do sistema, a função recuperará o número especificado de coordenadas do histórico dos sistemas. Você também pode fornecer um carimbo de data/hora, que será usado para diferenciar entre pontos idênticos no histórico.
A função GetMouseMovePointsEx retornará pontos que eventualmente foram enviados não apenas para o thread de chamada, mas também para outros threads.
GetMouseMovePointsEx pode falhar ou retornar valores incorretos nos seguintes casos:
- Se coordenadas negativas forem passadas na estrutura MOUSEMOVEPOINT .
- Se GetMouseMovePointsEx recuperar uma coordenada com um valor negativo.
- SM_XVIRTUALSCREEN,
- SM_YVIRTUALSCREEN,
- SM_CXVIRTUALSCREEN e
- SM_CYVIRTUALSCREEN.
int nVirtualWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN) ;
int nVirtualHeight = GetSystemMetrics(SM_CYVIRTUALSCREEN) ;
int nVirtualLeft = GetSystemMetrics(SM_XVIRTUALSCREEN) ;
int nVirtualTop = GetSystemMetrics(SM_YVIRTUALSCREEN) ;
int cpt = 0 ;
int mode = GMMP_USE_DISPLAY_POINTS ;
MOUSEMOVEPOINT mp_in ;
MOUSEMOVEPOINT mp_out[64] ;
ZeroMemory(&mp_in, sizeof(mp_in)) ;
mp_in.x = pt.x & 0x0000FFFF ;//Ensure that this number will pass through.
mp_in.y = pt.y & 0x0000FFFF ;
cpt = GetMouseMovePointsEx(&mp_in, &mp_out, 64, mode) ;
for (int i = 0; i < cpt; i++)
{
switch(mode)
{
case GMMP_USE_DISPLAY_POINTS:
if (mp_out[i].x > 32767)
mp_out[i].x -= 65536 ;
if (mp_out[i].y > 32767)
mp_out[i].y -= 65536 ;
break ;
case GMMP_USE_HIGH_RESOLUTION_POINTS:
mp_out[i].x = ((mp_out[i].x * (nVirtualWidth - 1)) - (nVirtualLeft * 65536)) / nVirtualWidth ;
mp_out[i].y = ((mp_out[i].y * (nVirtualHeight - 1)) - (nVirtualTop * 65536)) / nVirtualHeight ;
break ;
}
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winuser.h (inclua Windows.h) |
Biblioteca | User32.lib |
DLL | User32.dll |
Confira também
Conceitual
Referência