2009-07-28 29 views
5

Estoy trabajando en MFC y estoy tratando de capturar un bmp del escritorio. Estoy usando GetDC (NULL) para hacer esto, pero parece que ignora las ventanas especiales. Parece ignorar ventanas dibujadas con UpdateLayeredWindow. Este comportamiento parece estar sucediendo solo en Vista x64 y XP. También probé GetWindowDC con el HWND de escritorio, pero el resultado es el mismo.La captura de pantalla ignora algunas ventanas

NOTAS: 1) La pantalla de impresión funciona. 2) En Vista, si habilito Aero, las capturas de pantalla son correctas, aparecen ventanas "especiales". Así que en Vista solo ocurre cuando Aero está desactivado.

¿Ideas?

Gracias.

+0

para mí que aún no ha capturar videos –

+0

Interesante ... ¿Se presionando la pantalla de impresión realice el mismo? – sharptooth

+0

@Umair Ahmed: Creo que la pantalla de impresión en sí no captura videos –

Respuesta

6

Al llamar a BitBlt(), agregue el indicador CAPTUREBLT a "capturar" ventanas superpuestas

+0

Gracias. Esto funcionó. – Nemok

+1

IMO este tipo de conocimiento oscuro es exactamente de lo que se trata este sitio. Gracias (aunque probablemente nunca lo use :) :) – Roel

+0

Curiosamente, si incluyo 'CAPTUREBLT', entonces no obtengo marcos de ventanas, solo el área del cliente. Parece un catch-22. –

1

Esto podría deberse a la composición del escritorio. Desactive la composición de escritorio Aero en Vista e inténtelo de nuevo.

+0

Aero está apagado, XP tampoco lo tiene ... Es posible que este problema aparezca cuando Aero está apagado. Probará con Aero encendido. – Nemok

+0

De hecho hice algunas pruebas y parece que cuando deshabilito Aero en Vista, las ventanas "especiales" no aparecen. Con eso habilitan que lo hagan. En XP no hay opción de Aero para habilitar, por lo que el problema ocurre cada vez. ¿Algunas ideas? – Nemok