Información confidencial de Windows El caso de los cursores desaparece

Raymond Chen

es posible que haya observado que cuando se presiona la tecla PrtSc para tomar una captura de pantalla, el cursor parpadea brevemente. Lo crea o no, en realidad esto se consigue por la misma razón que la pantalla de apagado de Windows XP fade-out no incluye windows translúcidos.

Estas ventanas translúcidas, conocidas como ventanas por capas, no se incluyen normalmente por la función BitBlt al leer píxeles de la pantalla. Para poder llegar a ellos, deberá pasar el indicador CAPTUREBLT. Cuando lo haga, también puede observar que parpadea el cursor del mouse (ratón). ¿Por qué es?

Una vez en un tiempo, el objeto gráfico sólo que flotar "encima" del resto de los objetos de la pantalla era el cursor del mouse (ratón). Originalmente, el sistema compatible sólo cursores monocromática del mouse (ratón). Estos cursores se admiten en software o, si ha pasado con tener una tarjeta de vídeo impresionante, en el hardware.

Cuando se utiliza un cursor de tarjeta de admitida vídeo, Graphics Device Interface (GDI) proporciona la tarjeta de vídeo de un mapa de bits y una máscara y dice: "ACEPTAR, esto es el cursor del mouse (ratón). Superponer esto en la pantalla en las coordenadas que especifique." Cuando el usuario mueve el mouse, la GDI envía las coordenadas de tarjeta de vídeo actualizada y la tarjeta de vídeo funciona el disco duro de mover los píxeles de alrededor de la pantalla.

Por otro lado, cuando se utiliza un cursor de software compatible, el GDI es responsable de guardar los píxeles en el cursor antes de dibujarlo en el búfer de trama. El procedimiento funciona de la siguiente manera: cuando el usuario mueve el mouse, la GDI manualmente restaura los píxeles originales, guarda todos los píxeles en nueva posición el cursor y, a continuación, dibuja el cursor en esa posición nueva.

Cuando se emplea un cursor de hardware, los píxeles del cursor del mouse (ratón) no realmente existen en el búfer de trama porque el hardware es responsable de realizar la superposición. Por lo tanto, la BitBlt función es capaz de sólo copia píxeles desde el búfer marco sin miedo de recoge el píxeles desde el cursor del mouse (ratón) por error puesto que los píxeles no existen en el búfer de trama para empezar.

Por el contrario, si se utiliza un cursor de software, a continuación, la GDI debe quitar el cursor del mouse (ratón) de la pantalla antes de realizar una BitBlt desde la pantalla si el área que se va a copiar coincide con el cursor del mouse (ratón).

Cuando se emplean cursores animados, los cursores de hardware sólo no bastante cortar la mostaza, puesto que los cursores de hardware no animar. Por lo tanto, los cursores animados se implementan en software.

ACEPTAR, muy buena. ¿Pero lo que esto tiene que hacer con CAPTUREBLT? Bloquearse en, se obtienen no existe.

En Windows 2000, el mecanismo de composición que se utilizó para los cursores de software se general para las aplicaciones puede aprovechar también se. Estos pseudo-cursors, en última instancia, se convirtieron conoce como ventanas por capas. Al igual que los cursores de software, ventanas por capas no aparecen cuando lo haga un BitBlt de la pantalla ya que no existen realmente en el sentido habitual. Los píxeles desde el cursor y ventanas por capas están compuestos en la pantalla en el último momento.

Pero ¿qué ocurre si desea capturar las píxeles de una ventana por capas mediante BitBlt? Eso es que el nuevo indicador CAPTUREBLT entra en juego. Esta captura los píxeles después de que el motor de composición ha tenido su decir. Puesto que el código que genera la pantalla de cierre atenuado Windows XP no cede el CAPTUREBLT, no aparecen ventanas por capas.

Para explicar por qué flickers el cursor, sin embargo, no parece que aún. En realidad, lo hace. El cursor del mouse (ratón) es sólo otro objeto de composición y, por tanto, podría ser capturado por el indicador CAPTUREBLT. Para evitar que esto ocurra durante una captura de pantalla, el motor de composición tiene que oculta el cursor, siga el CAPTUREBLT y re-show, a continuación, el cursor.

Al exponer el motor de composición de Windows 2000 para las aplicaciones, los cursores han perdido su estado especial. Se ha incluyen circle completa. Está ahora igual que la buena antiguos días, al Cuando todo haya fue un búfer de trama y un cursor de software.

Raymond Chen Sitio Web, Old New Thing, y libro idéntico título (Addison-Wesley, 2007) tratar Windows histórico, programación de Win32 y misreading los titulares de estilo periodístico.