Función GetMouseMovePointsEx (winuser.h)
Recupera un historial de hasta 64 coordenadas anteriores del mouse o lápiz.
Sintaxis
int GetMouseMovePointsEx(
[in] UINT cbSize,
[in] LPMOUSEMOVEPOINT lppt,
[out] LPMOUSEMOVEPOINT lpptBuf,
[in] int nBufPoints,
[in] DWORD resolution
);
Parámetros
[in] cbSize
Tipo: UINT
Tamaño, en bytes, de la estructura MOUSEMOVEPOINT .
[in] lppt
Tipo: LPMOUSEMOVEPOINT
Puntero a una estructura MOUSEMOVEPOINT que contiene coordenadas válidas del mouse (en coordenadas de pantalla). También puede contener una marca de tiempo.
La función GetMouseMovePointsEx busca el punto del historial de coordenadas del mouse. Si la función encuentra el punto, devuelve los últimos nBufPoints anteriores a e incluido el punto proporcionado.
Si la aplicación proporciona una marca de tiempo, la función GetMouseMovePointsEx la usará para diferenciar entre dos puntos iguales que se registraron en momentos diferentes.
Una aplicación debe llamar a esta función mediante las coordenadas del mouse recibidas del mensaje WM_MOUSEMOVE y convertirlas en coordenadas de pantalla.
[out] lpptBuf
Tipo: LPMOUSEMOVEPOINT
Puntero a un búfer que recibirá los puntos. Debe tener al menos el tamaño cbSize* nBufPoints .
[in] nBufPoints
Tipo: int
Número de puntos que se van a recuperar.
[in] resolution
Tipo: DWORD
Resolución deseada. Este parámetro puede ser uno de los valores siguientes.
Valor devuelto
Tipo: int
Si la función se ejecuta correctamente, el valor devuelto es el número de puntos del búfer. De lo contrario, la función devuelve –1. Para obtener información de error extendida, la aplicación puede llamar a GetLastError.
Comentarios
El sistema conserva las últimas 64 coordenadas del mouse y sus marcas de tiempo. Si la aplicación proporciona una coordenada del mouse a GetMouseMovePointsEx y la coordenada existe en el historial de coordenadas del mouse del sistema, la función recupera el número especificado de coordenadas del historial de los sistemas. También puede proporcionar una marca de tiempo, que se usará para diferenciar entre puntos idénticos en el historial.
La función GetMouseMovePointsEx devolverá puntos que finalmente se distribuyeron no solo al subproceso que realiza la llamada, sino también a otros subprocesos.
GetMouseMovePointsEx puede producir un error o devolver valores erróneos en los casos siguientes:
- Si se pasan coordenadas negativas en la estructura MOUSEMOVEPOINT .
- Si GetMouseMovePointsEx recupera una coordenada con un valor negativo.
- SM_XVIRTUALSCREEN,
- SM_YVIRTUALSCREEN,
- SM_CXVIRTUALSCREEN y
- 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 | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluya Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Consulte también
Conceptual
Referencia