Solución de problemas de aplicaciones
En esta sección se proporcionan soluciones a problemas comunes.
Solución general de problemas
Category | Descripción |
---|---|
Problema | Estoy ejecutando Windows Server 2008 y las características de Windows Touch no funcionan. |
Causa | No he habilitado la experiencia de escritorio. |
Solución | Abra la herramienta administrativa Administrador del servidor: haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador del servidor. Haga clic en el elemento Características de la columna izquierda. Haga clic en Agregar características en la sección Características. Seleccione Experiencia de escritorio, haga clic en Siguiente y, a continuación, haga clic en Instalar. |
Category | Descripción |
---|---|
Problema | Cada vez que muevo el dedo rápidamente sobre mi aplicación, aparece una flecha y mi gesto o manipulación no se registra correctamente. |
Causa | Parpadeos habilitados cuando no los necesita. |
Solución | Tiene los parpadeos habilitados cuando quiere que estén deshabilitados. Consulte Compatibilidad heredada con el movimiento panorámico con barras de desplazamiento para obtener información sobre cómo deshabilitar los parpadeos de lápiz. |
Problema | No puedo distinguir entre la entrada del mouse y la entrada de Windows Touch. | ||
Causa | Windows genera mensajes del mouse para la compatibilidad heredada cuando un usuario hace clic en la pantalla. | ||
Solución | Puede llamar a GetMessageExtraInfo para los mensajes WM_LBUTTONDOWN y WM_LBUTTONUP para determinar el origen. En el código siguiente se muestra cómo se puede hacer esto.
|
Category | Descripción |
---|---|
Problema | Cómo ejecuto aplicaciones de Microsoft PixelSense en Windows 7? |
Causa | Windows Touch y Microsoft PixelSense no son compatibles. |
Solución | Debe tener como destino la plataforma Windows 7 o la plataforma Microsoft PixelSense. |
Solución de problemas de manipulaciones e inercia
Category | Descripción |
---|---|
Problema | Mi solicitud se congela sin motivo. Obtengo infracciones de acceso al inicializar mis interfaces de objeto. |
Causa | Falta una llamada a CoInitialize al usar las interfaces IManipulationProcessor o IInertiaProcessor. |
Solución | Esto podría deberse a la creación de instancias de los objetos del Modelo de objetos de componente de Windows Touch (COM) sin llamar a CoInitialize. Esto sucede a veces cuando se convierten proyectos a partir del uso de gestos para usar las interfaces de manipulaciones o de inercia. |
Category | Descripción |
---|---|
Problema | Mi objeto gira incorrectamente cuando se traduce. La rotación de un solo dedo no funciona correctamente. |
Causa | Se establecen incorrectamente los pivotes en un objeto. |
Solución | No está configurando correctamente los puntos dinámicos de manipulación. Establezca las propiedades PivotPointX y PivotPointY en el centro del objeto o punto alrededor del cual desea girar y establezca la propiedad PivotRadius en el radio del objeto. |
Solución de problemas de entrada de Windows Touch
Category | Descripción |
---|---|
Problema | Después de controlar el mensaje de WM_TOUCH, dejo de recibir comentarios de límites. |
Causa | Consumir el mensaje de WM_TOUCH sin controlarlo. |
Solución | Probablemente esté consumiendo un mensaje de Windows Touch sin reenviarlo a DefWindowProc, lo que provocará un comportamiento inesperado. Consulte Introducción a mensajes de Windows Touch para obtener más información sobre cómo controlar correctamente los mensajes de WM_TOUCH. |
Problema | Estoy incluyendo windows.h, pero sigue diciendo que WM_TOUCH no está definido. | ||
Causa | La versión de Windows en Targetver.h es incorrecta. | ||
Solución | No ha establecido la versión correcta de Windows en el proyecto. En el código siguiente se muestran las versiones de Windows establecidas correctamente para Windows Touch en Windows 7.
|
Problema | Mis coordenadas x e y de entrada táctil parecen no ser válidas. Son valores mayores de los esperados o valores negativos. | ||
Causa | Es posible que tenga que convertir los puntos táctiles a píxeles, o puede que tenga que convertir las coordenadas de la pantalla. | ||
Solución | Asegúrese de llamar a TOUCH_COORD_TO_PIXEL y ScreenToClient. El código siguiente muestra cómo hacerlo.
Nota: |
Category | Descripción |
---|---|
Problema | No veo mensajes WM_TOUCH, pero sé que Windows Touch funciona porque veo mensajes WM_GESTURE. |
Causa | Falta una llamada a RegisterTouchWindow. |
Solución | Los mensajes de WM_TOUCH y WM_GESTURE son mutuamente excluyentes. Si no llama a RegisterTouchWindow, solo recibirá mensajes de WM_GESTURE. |
Category | Descripción |
---|---|
Problema | Estoy notando pequeños retrasos desde el momento en que toco con el dedo hacia abajo hasta que recibo la entrada en mi aplicación. |
Causa | El rechazo de la palma está causando retrasos en la entrada. |
Solución | Si TWF_WANTPALM se establece en llamadas a RegisterTouchWindow, el rechazo de la palma está habilitado. Esto provoca un retraso pequeño (100 ms) mientras el software comprueba si la entrada procede de un dedo, un lápiz o la palma del usuario. Deshabilite el rechazo de palma llamando a RegisterTouchWindow con la marca TWF_WANTPALM desactivada. |
Solución de problemas de gestos de Windows Touch
Category | Descripción |
---|---|
Problema | Después de controlar el mensaje de WM_GESTURE, dejo de recibir comentarios de límites. O bien, un gesto que funcionó anteriormente ahora ya no funciona. |
Causa | Consumir el mensaje de WM_GESTURE sin controlarlo. |
Solución | Probablemente esté consumiendo un mensaje de Windows Touch sin reenviarlo a DefWindowProc, lo que provocará un comportamiento inesperado. Consulte Introducción a los gestos de Windows para obtener más información sobre cómo controlar correctamente los mensajes de WM_GESTURE. |
Category | Descripción |
---|---|
Problema | No veo mensajes de WM_GESTURE, pero sé que Windows Touch funciona porque veo mensajes de WM_TOUCH. |
Causa | Llamar a RegisterTouchWindow. |
Solución | Los mensajes de WM_TOUCH y WM_GESTURE son mutuamente excluyentes. Si llama a RegisterTouchWindow, no recibirá mensajes de WM_GESTURE. |
Problema | No veo todos los gestos que espero ver. Por ejemplo, veo gestos con el identificador GID_PAN, pero no GID_ROTATE. | ||
Causa | Algunos gestos, como el gesto de rotación, no están habilitados de forma predeterminada. | ||
Solución | Debe llamar a SetGestureConfig cuando reciba un mensaje de WM_GESTURENOTIFY, tal como se describe en la referencia de WM_GESTURENOTIFY, o bien agregar un controlador para el mensaje de WM_GESTURENOTIFY. En el código siguiente se muestra cómo se podría implementar un controlador para habilitar la compatibilidad con la rotación.
Para obtener más ejemplos de configuraciones de gestos típicas, consulte SetGestureConfig. |
Category | Descripción |
---|---|
Problema | Las barras de desplazamiento personalizadas de mi aplicación no se desplazan al realizar el gesto panorámico. |
Causa | Faltan controladores para los mensajes de WM_*SCROLL correctos. |
Solución | No controla todos los mensajes de WM_*SCROLL en las barras de desplazamiento personalizadas. Se recomienda controlar el mensaje de WM_GESTURE en lugar de conservar la funcionalidad de barra de desplazamiento personalizada a través de la compatibilidad heredada. Debe admitir mensajes como se detalla en la sección Compatibilidad heredada para movimiento panorámico con barras de desplazamiento. |
Category | Descripción |
---|---|
Problema | Obtengo retrasos en los gestos. |
Causa | Los parpadeos pueden estar causando retrasos en los gestos. |
Solución | Los parpadeos pueden provocar retrasos por el tiempo que tarda la aplicación en recibir mensajes de WM_GESTURE. Consulte Compatibilidad heredada con el movimiento panorámico con barras de desplazamiento para obtener información sobre cómo deshabilitar los parpadeos. |
Temas relacionados