2008-10-27 25 views
5

En casi cualquier aplicación de Windows, observo que al mantener presionado el botón del mouse en un área no cliente, la pintura se detiene. ¿Por qué es esto requerido?Windows: Ratón hacia abajo en la decoración de ventana

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 mantengo presionado el botón del mouse, el cubo deja de girar a pesar de que no he codificado ninguna de esas condiciones en mi ciclo.

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

+0

Sin embargo, me parece útil esta función para la depuración. Pausar cubos giratorios para una inspección más cercana y tal. –

Respuesta

7

Al hacer clic en la barra de título, está a brief pause mientras que el administrador de ventanas intenta determinar si está haciendo clic o iniciando un arrastre (moviendo la ventana). Si todavía está presionando el botón, entonces es un arrastre: el administrador de ventanas configura su propio bucle de mensajes y bombea mensajes hasta que suelta el mouse. Su ventana todavía debería poder procesar los mensajes, porque aún se enviarán, pero si su animación depende de un bucle de mensaje personalizado, entonces estará atascado hasta que finalice el ciclo de arrastre modal.

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

+0

Solo quiero aclarar que mi aplicación no depende de un bucle de mensaje personalizado. Además, creo que estas condiciones se aplican a todas las aplicaciones en Windows XP (y 2000 ... no han probado en otros). –

Cuestiones relacionadas