Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona información sobre cómo habilitar el gesto de pulsación y suspensión en una aplicación de Microsoft Foundation Class (MFC).
Versión original del producto: Visual Studio 2010 y versiones posteriores
Número de KB original: 2846829
Resumen
En un equipo tablet que ejecuta Windows, el sistema enviará un mensaje de WM_TABLET_QUERYSYSTEMGESTURESTATUS a las ventanas activas que podrían recibir la entrada del usuario. En una aplicación MFC, todas las ventanas se derivan normalmente de la CWnd
clase y esta clase base controla este mensaje en su OnTabletQuerySystemGestureStatus
método. Este método llama a la función CWnd::GetGestureStatus
virtual , que luego devolverá TABLET_DISABLE_PRESSANDHOLD
, por motivos de rendimiento. Si la aplicación quiere habilitar el gesto de pulsación y suspensión, debe invalidar este método en la clase de ventana derivada y devolver algo que no incluya la TABLET_DISABLE_PRESSANDHOLD
marca.
Comportamiento predeterminado: deshabilitar la acción de presionar y mantener
Para habilitar el concepto de clic con el botón derecho, que normalmente significa mostrar el menú contextual y que viene en forma de mensajes WM_RBUTTONDOWN
, WM_RBUTTONUP
y eventos WM_CONTEXTMENU
, ISG_HOLDENTER
y ISG_RIGHTTAP
, el gesto de presionar y mantener presionado debe estar habilitado para esa ventana. Para detectar este gesto, se introduce necesariamente un retraso para distinguir entre una simple pulsación (tratada como un clic izquierdo) y una pulsación prolongada (clic derecho). Por lo tanto, tardará más tiempo en generarse eventos de clic izquierdo y la aplicación parecerá menos dinámica. Por este motivo, el comportamiento predeterminado es inhabilitar el gesto de pulsar y mantener presionado.
Habilitación del gesto de presionar y mantener presionada la tableta
Si la aplicación MFC necesita este gesto para implementar el control con el botón derecho, debe invalidar la función virtual GetGestureStatus
para cualquier clase de ventana derivada que necesite implementar un controlador de clic derecho. Supongamos que es una clase de vista denominada CMyView definida en MyView.h e implementada en MyView.cpp. En MyView.h, agregue lo siguiente:
virtual ULONG GetGestureStatus(CPoint ptTouch);
En MyView.cpp, agregue lo siguiente:
ULONG CMyView::GetGestureStatus(CPoint /*ptTouch*/)
{
return 0;
}
El valor 0
devuelto podría reemplazarse por una combinación de otras banderas, tal como se describe en la documentación de WM_TABLET_QUERYSYSTEMGESTURESTATUS, pero si desea habilitar mantener pulsado, no incluya la bandera TABLET_DISABLE_PRESSANDHOLD
.