Pregunta

En casi todas las aplicaciones de Windows, me doy cuenta de que mantener presionado el botón del mouse en un área que no es del cliente hace que la pintura se detenga. ¿Por qué se requiere esto?

Por ejemplo, tengo una aplicación Managed Direct 3D que muestra un cubo giratorio. Si coloco el puntero sobre la barra de título y presiono el botón del mouse, el cubo deja de girar aunque no haya codificado ninguna de esas condiciones en mi bucle.

¿Por qué se detiene la pintura? ¿Cuales son los beneficios? Lo más importante, ¿cómo puedo solucionar esto?

¿Fue útil?

Solución

Al hacer clic en la barra de título, hay un breve pausa mientras el administrador de ventanas intenta determinar si estás haciendo clic o iniciando un arrastre (moviendo la ventana). Si aún mantiene presionado el botón, entonces es un arrastre: el administrador de ventanas configura su propio bucle de mensajes y bombea mensajes hasta que suelte el mouse. Su ventana aún debería poder procesar mensajes, ya que aún se enviarán, pero si su animación depende de un bucle de mensajes personalizado, quedará bloqueado hasta que finalice el bucle de arrastre modal.

Para evitarlo, active la animación en respuesta a los mensajes: un temporizador me parece una buena opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top